4

我正在尝试使用 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); 
}
4

2 回答 2

4

您是否在项目中添加了“jvm.lib”作为附加依赖项?此外,您需要在附加库目录中指定 jvm.lib 的位置...

另请注意,对于 64 位应用程序,您需要指向 64 位库,否则链接器将无法链接

您可以在配置属性->链接器区域中找到这些设置。

希望这些信息对您有所帮助。

干杯,

于 2012-09-24T04:10:09.230 回答
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 添加到其他依赖项。

于 2014-09-24T11:11:42.640 回答