セッティング完了



 結論から言うと、セッティングは完了、サンプルコードは3D表示を成功させた。
 以下にその顛末を述べる。





たけチン 『Djava.library.path="${libs.xith3d.natives.classpath}" は、NativeLibの場所を指定しているので、関連するDLLやSOのある場所を設定する必要があります。環境変数「libs.xith3d.natives.classpath」が未定義なら、直接的に書いてらどうでしょうか?
Djava.library.path="C:\usr\lib\xith3d\native"』(2009/06/01 11:34)

・・・NativeLibって何?


 と言う所で昨日は寝た訳だが、Libはライブラリだろうから「ネイティブライブラリとは」で早速ググってみる。
 ・・・が、30件見出しを見ても「ネイティブライブラリとは」という言い回しをしているページが無い。「ネイティブライブラリ」を使っているページはたくさんHITしたが、どれもこれも「ネイティブライブラリ」を既に定義済みの言葉として使っているようだった。ということは、「ネイティブ」という用語にIT的な意味があることをみんな知っている可能性がある。
 そこで研究室のJavaの初心者本を片っ端から見てみたが、そもそも索引に「native」も「ネイティブ」も載っていないものがほとんどだった。かろうじて”逆引き速引きリファレンスJava(2003年アスキー)”にメソッドの修飾詞として一行

nathive:Cなど他のプラットフォームに依存して実装されている

とあったが、いまいち理解できない。そこで「Java ネイティブとは」でググってみた。1・2件目はネイティブスピーカーの話だったが、3件目にそれらしい記事が

ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.ja/dv_vcmcpp/html/b200cfd1-0440-498f-90ee-7ecf92492dc0.htm
方法 : ネイティブの C++ プログラムをコマンドラインからコンパイルする
・・・にあるC++プログラムで、次に示すものは”ネイティブの C++ プログラム”と書かれていますが、
ここで”ネイティブのC++プログラム”とはどういう意味ですか?
【後略】

 ふむふむ、似たような悩みだな!そして、それに対する解答の中にひときわ分かりやすいものがあった。

渋木宏明
ここで言う「ネイティブ」は、「実行形式ファイルを OS がメモリに読み込み、CPU が直接的に解釈・実行を行う」スタイルを指しています。


「ネイティブ〜」は、このスタイルに対応した事物を指し示す場合の枕詞になっています。


古来、このスタイルが主流であり、これらの実行環境や方式をあえて「ネイティブ」と呼ぶことはありませんでした。


しかしながら近年、Java .NET のような、OS とは異なる層でアプリケーションプログラムの解釈・実行を行う「仮想実行環境」が登場し、混乱を避ける意味からも、両者を区別する語が必要となる場面がチラホラ見られはじめました。


そこで、特に Microsoft 社では、.NET の仮想実行環境(=.NET ランタイム = CLR)の管理下でプログラム実行を行うスタイルを「マネージ(ド)」と呼び、旧来の OS/CPU 手動でプログラム実行するスタイルを「ネイティブ」と呼ぶことにしたようです。

 おおーなるほど分かりやすい。さすがMVP!つまりJavaのようなインタプリタ向けのclassファイルじゃなくて、OSを本来動かしているマシン語の実行ファイル(exeとかdllとか?)のことをネイティブというんだね。それなら、上の修飾詞の説明もうなずける。つまりネイティブライブラリは、OS側にもともとあるマシン語のファイルか、もしくはOS向けに作られた非classファイル(つまりマシン語)のことを言うんだね。


 ・・・うーん。
 やっぱり分からないなぁ。どっちにせよネイティブライブラリがどこにあるか分からないから、直接であろうと間接であろうとパスを指定できないよ。
 うーん。
 うーん。


 そこに私の隣に座っている友人が登場。
「プロジェクトのライブラリにXith3D登録した?」
「プロジェクトのプロパティ→ライブラリ→実行時ライブラリにXith3D登録した?」
 やったよー。セッティングページの指示通りにね。
「どれどれ見せて。」
 ほら、新しいプロジェクトを準備してるだろ?で、次にorg.myorg.myfirstshape.Mainって名前をつけて、依存性を指定するためにライブラリに以下のリストを加える、と。そうそう、この相対パスにするって部分がダイアログに出て来ないんで絶対パスで設定しちゃったけど大丈夫だよね。


・・・あれ?その下の部分訳した覚えがないな・・・。

Since Xith3D uses native OpenGL calls to perform its rendering, we will also need to reference the native libraries somewhere. Unfortunately Netbeans has no support for native libraries in its project settings, so we need to abuse the Library feature a bit. Just create another Library called "xith3d.natives" and locate the folders containing the native libraries for your platform. On the right screenshot you see the configuration for a win32 system.

If you have sucessfully created the two libraries, select the "xith3d" library and click [Add Library] to apply the dependency to your project. Don't add the "xith3d.natives" library, since we will abuse this configuration later :)

                                                                                              • -

Xith3Dがその翻訳レンダリングを実行するという時に自国のネイティブのOpenGL要求コールを使うので、我々は自国ネイティブ蔵書をどこかで参照文に引用する必要もあります。残念なことに、Netbeansはそのプロジェクトセッティングでネイティブライブラリに対する支持サポートをしないので、我々は少し図書館機能を濫用する必要があります。ちょっと「xith3d.natives」と呼ばれているもう一つの図書館をつくって、あなたのプラットホームのためにネイティブライブラリを含んでいるフォルダを見つけてください。正常な右の画面ショットの上で、あなたはwin32システムについて構成を参照し見ます。

あなたが2つの図書館をsucessfullyにつくったならば、「xith3d」図書館を選んで、属国関係性をあなたのプロジェクトに適用するために、クリックしてください[図書館を加えます]。我々が後でこの構成を悪用する時からので、「xith3d.natives」図書館を加えないでください:)

 なにぃぃぃぃぃい!?ちゃんとネイティブライブラリについて書いてあるじゃないか!
 読み飛ばしてた・・・|||orz|||ズドーン


 で、指示通りツール→ライブラリ→クラスライブラリ→新規ライブラリ→xith3d.nativesと名前を付けて、スクリーンショットにあるパスを参考にxith3dライブラリに登録したjarファイルのあるフォルダの近辺を捜して、3つのdllファイルを登録した。


 で、早速サンプルコードを実行してみた。


 ・・・成功!










 成功しちゃったよ!!orz


 つまり・・・


 結局俺のミスかっ!


 ちくしょう!このやり場のない怒りをどうすればいいのだ!


 うぉぉ〜〜!俺の空回りする怒りは




秒速60回転だぁ〜〜!!

.......´´○``..../
´.....(ヽュ'.........シャカシャカシャシャカシャカシャカシャシャカ
▲◎ノ◎▲.\ _____________________________________[ただ今の発電量9W]







 また同じパターンで解決してしまった・・・。とほほ。