【发布时间】:2011-07-11 19:42:06
【问题描述】:
我是一名经验丰富的 Java 编码员,但我是 XCode 和 C++ 的新手,很抱歉这个愚蠢的问题。
我正在用 XCode 编写一些需要实例化 Java 虚拟机的 c++ 代码。 OS X Java 插件中有一个名为 JavaVM_GetJNIEnv() 的方法,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
所以我的问题是,如何使用 XCode 链接到 .jnilib 文件中的代码?
【问题讨论】:
标签: xcode cocoa macos linker bundle