私は経験豊富なJavaコーダーですが、私はXcodeとC++を初めて使用しています。OS Xでバンドルするためのヘルプが必要です
私はJava仮想マシンをインスタンス化する必要があるXCodeにいくつかのC++コードを書いています。そこJavaVM_GetJNIEnv(と呼ばれるOS XのJavaプラグインのメソッド)があり、およびSun/Oracleのソースコードのヘッダファイルには、これらの行でJavaVM.hと呼ば:
// Gets the JNIEnv* associated with the Java VM, creating the JVM
// instance if necessary. Note that the implementation of this routine
// must be prepared for it to be called from more than one thread.
JNIEnv* JavaVM_GetJNIEnv();
私は自分に.hファイルを追加しましたXCodeプロジェクトですが、バイナリファイルへのリンク方法はわかりません。私はこのように、リンカに負荷を強制する方法を考え出し:
-force_load /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin/Contents/MacOS/JavaPlugin2_NPAPI
(このファイルはシンボリックリンクであり、実際のパスは/System/Library/Java/Support/Deploy.bundle/Contents/Resourcesです/JavaPlugin2_NPAPI.plugin/Contents/Resources/Java/libplugin2_npapi.jnilib)
しかし、私は、このエラーメッセージが表示されます:
ld: in /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin/Contents/MacOS/JavaPlugin2_NPAPI, can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB)
collect2: ld returned 1 exit status
だから私の質問は、私は.jnilibファイル内のコードにリンクするか、ですXCodeで?
私はすでにフレームワークのリストにJavaVM.frameworkを持っています。おそらくその関数は別のライブラリで定義されています。私は 'nm'で狩りをして、探している機能がどのバイナリであるかを正確に調べようとします。多分私はちょうど別のフレームワークを追加する必要があります。 –
OK、ファイルの実際の場所が見つかりました。私は、必要な機能が含まれていることを確認するために「nm」を使用しました。実際のバイナリ上の場所は '/System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin/Contents/MacOS/JavaPlugin2_NPAPI'です。バンドルをXCodeに追加することはできないので、どうすればこのリンクにリンクできますか? –
osxでは、gccラッパーは引数として-F