我是一位經驗豐富的Java編碼人員,但我是XCode和C++的新手,非常抱歉,這個愚蠢的問題。需要幫助鏈接到捆綁在OS X上
我在XCode中編寫了一些需要實例化Java虛擬機的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'做一些狩獵來試圖找出究竟哪個二進制文件具有我正在尋找的功能;也許我只需要添加一個不同的框架。 –
好吧,我找到了文件的真實位置。我用'nm'來驗證我需要的功能是否包含在內。實際二進制文件的位置是'/System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin/Contents/MacOS/JavaPlugin2_NPAPI'。由於我不能將捆綁包添加到XCode,我將如何鏈接到此? –
在osx下,gcc包裝接受-F