Der*_*tor 5 java-native-interface osx-mountain-lion xcode5
我正在尝试使用Mac OS-X Mountain Lion上的Xcode编译以下用于创建Java虚拟机的C++代码:
JNIEnv * createVM(JavaVM **jvm){
JNIEnv * retEnv = NULL;
JavaVMInitArgs vm_args = *new JavaVMInitArgs();
JavaVMOption *options = new JavaVMOption[1];
std::string sJavaInstallPath = "-Djava.class.path=" + findJavaPath();
if(sJavaInstallPath == "-Djava.class.path="){
return NULL;
}
options[0].optionString = const_cast<char*>(sJavaInstallPath.c_str());
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;
long status = JNI_CreateJavaVM(jvm, (void**)&retEnv, &vm_args);
if(status == JNI_ERR){
std::cout << "Failure: Unable to load JVM \t Exit" << std::endl;
}else if(status == JNI_OK){
std::cout << "CreateVM:\t\tJVM loaded successfully" << std::endl;
}
delete options;
return retEnv;
};
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误: 架构x86_64的未定义符号:"_ JNI_CreateJavaVM".
从这些类似的问题:
undefined symbol:Linux中的JNI_CreateJavaVM
http://lists.apple.com/archives/java-dev/2005/Apr/msg00067.html
http://lists.apple.com/archives/java-dev/2005/Apr/msg00068.html
我收集到我错过了对libjvm.dylib的库引用.问题是我不确定如何让Xcode识别/包含用于链接的库,
我已经尝试将以下目录(所有这些包含libjvm.dylib文件)放入Xcode的Library Search Paths列表中,但没有结果:
/System/Library//Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/
/Library//Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/server/
/System/Library/Frameworks/JavaVM.framework/Libraries/
我还是OS-X和Xcode的新手,其他问题的答案都与使用gcc或g ++进行编译有关,我对它的经验更少,所以我需要知道的是:我怎么告诉Xcode编译器在哪里可以找到libjvm.dylib,还有哪个libjvm.dylib是我应该链接到的?
好的,找到了解决方案,
相当于g ++的
-L<library/to/link>
Run Code Online (Sandbox Code Playgroud)
Xcode中的设置是Build Phases选项卡下的Link Binary with Libraries设置,而不是我上面提到的Library Search Paths列表.
我需要链接的库实际上是/System/Library/Frameworks/JavaVM.framework/ JavaVM,
不是libjvm.dylib
归档时间: |
|
查看次数: |
1504 次 |
最近记录: |