我正在尝试使用JNI创建JVM。我正在使用win 7 64位操作系统。在线JNI_CreateJavaVM我的程序崩溃了。我决定使用64位编译器编译我的程序并得到以下错误:
Error 1 error LNK2001: unresolved external symbol __imp_JNI_CreateJavaVM
我应该从哪里开始寻找链接问题以及为什么我的程序在32位模式下崩溃?
void createJVM()
{
JavaVMInitArgs vm_args;
JavaVMOption options[4];
int n = 0;
char * str;
str= new char[1000];
sprintf(str, "-Djava.class.path=%S\\tst.jar", myPath);
options[n++].optionString = str;
str= new char[1000];
sprintf(str, "-Djava.library.path=%S\\lib;%S", myPath, myPath);
options[n++].optionString = str;
str= new char[1000];
sprintf(str, "-Duser.dir=%S", myPath);
options[n++].optionString = str;
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = n;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;
JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
}
答案 0 :(得分:4)
你添加了' jvm.lib'作为项目中的附加依赖项? 此外,您需要在附加库目录中指定jvm.lib的位置...
另请注意,对于64位应用程序,您需要指向64位库,否则链接器不会链接
您可以在Configuration Properties-> Linker区域中找到这些设置。
希望这些信息可以帮到你。
干杯,
答案 1 :(得分:0)
由于我无法表达自己(仍然不到15个声誉),我只想确认Naytzyrhc解决方案对我有效。
为了澄清一点,在 Visual Studio Express 2013(v12)中,您应该去:
Project -> [YourProjectName] Properties... -> Linker -> General -> Additional Library Directories
用于将lib文件夹添加到其他库目录,并且:
Project -> [YourProjectName] Properties... -> Linker -> Input -> Additional Dependencies
用于将jvm.lib添加到其他依赖项。