- ベストアンサー
Windows上でLinux向けのJNA開発
- Windows上でLinux向けのJNAを使ったコードの開発方法
- JavaでJNAを使ってWindows上のJavaとCygwin上のネイティブコードを連携する方法
- Win上でEclipseを使いながらCygwin上で動くJavaプロジェクトを開発する方法
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 実は私も昔、JNIを使ったことがあります。 しかもWindowsとLinuxの両方のコードを書きました。 そのときはWindows環境ではVC++、 Linux環境はgccでした。 Windows環境でコンパイルしたバイナリは当然Linuxではうごきません。 たとえCygwin用であっても! ですからWindows、Linuxそれぞれでコンパイルすることになります。 C言語で書いた部分はTCPまたはUDPで通信する部分でしたので WinでもLinuxでもさほどは変わらなかったのですが やはり違うところは違います。 その部分はあきらめてサクっと思い切って違うソースにして コンパイルのときに振分けるようにしました。 #define や #ifdef など Cのプリコンパイラを駆使し、また コンパイルにAntを使って コンパイル環境を自動判別させて Windows環境であればWindowの、 Linux環境であればLinux用のコンパイルバッチ(makefile)を 起動するようにします。 まぁ、まずはWindowsでうごくものを作りましょう。 其の後でLinux環境を用意するか VMWareなどをつかってWindows上にLinux環境をつくり そこでLinuxでうごくプログラムに改造して それぞれでうまくコンパイルできるようにします。 そしてJNIを呼び出す側、 すなわちJava側で WindwsのJNIを呼び出すクラス、 LinuxのJNIを呼び出すクラス をそれぞれつくり、 なんらかの方法で実行している環境がWinかLinuxかを判断して Win用かLinux用かどちらかのJNI呼び出しクラスを呼び出す というのが妥当な腺かと思います。 すくなくともわたしはそうしました。
その他の回答 (2)
- DoubleHead
- ベストアンサー率41% (12/29)
No.1,2です。 ちなみに、JNIはJNAの前の技術
- DoubleHead
- ベストアンサー率41% (12/29)
Cygwinとリンクさせるのは・・・ かなり厳しいんではないかと思うのですが gcc のWindowsでの実装であるMinGW というのがあります。 MinGWで検索すればいろいろ出てきます。 EclipseでMinGWを使う方法も出て来ます。 こちらをつかってみてはいかがでしょうか。
お礼
参考になりました。 しかし、未だにJNI等を使う場合のクロスプラットフォーム開発においてどういう環境を構築すればいいのか、 主流な方法が分からないでいます。 とりあえずMinGWをEclipseから使って、ライブラリの依存関係等に注意しながら書いていくつもりですが、 何か見逃しがあればLinux上で動かないという事になってしまうので難しいと思いますし、 どういった点に注意すればいいのかというまとめた記事も見つからないので戦々恐々としながらです。 引き続き何か情報を募集します。