java - Visual C++ 错误 : LNK2019, LNK2028 和 LNK1120

标签 java c++ visual-c++ java-native-interface lnk2019

我正在开发一个基本应用程序来创建 Java VM 并使用 JNI 从 C++ 启动 Java 程序。但是,我有一些编译错误:

Error   6   error LNK2028: unresolved token (0A00000D) "extern "C" long __stdcall JNI_CreateJavaVM(struct JavaVM_ * *,void * *,void *)" (?JNI_CreateJavaVM@@$$J212YGJPAPAUJavaVM_@@PAPAXPAX@Z) referenced in function "public: bool __clrcall JarLauncher::launchJar(void)" (?launchJar@JarLauncher@@$$FQ$AAM_NXZ)  
Error   5   error LNK2028: unresolved token (0A00000C) "extern "C" long __stdcall JNI_GetDefaultJavaVMInitArgs(void *)" (?JNI_GetDefaultJavaVMInitArgs@@$$J14YGJPAX@Z) referenced in function "public: bool __clrcall JarLauncher::launchJar(void)" (?launchJar@JarLauncher@@$$FQ$AAM_NXZ)      
Error   7   error LNK2019: unresolved external symbol "extern "C" long __stdcall JNI_GetDefaultJavaVMInitArgs(void *)" (?JNI_GetDefaultJavaVMInitArgs@@$$J14YGJPAX@Z) referenced in function "public: bool __clrcall JarLauncher::launchJar(void)" (?launchJar@JarLauncher@@$$FQ$AAM_NXZ)   
Error   8   error LNK2019: unresolved external symbol "extern "C" long __stdcall JNI_CreateJavaVM(struct JavaVM_ * *,void * *,void *)" (?JNI_CreateJavaVM@@$$J212YGJPAPAUJavaVM_@@PAPAXPAX@Z) referenced in function "public: bool __clrcall JarLauncher::launchJar(void)" (?launchJar@JarLauncher@@$$FQ$AAM_NXZ)   
Error   9   error LNK1120: 4 unresolved externals   

有什么帮助吗?

最佳答案

您似乎没有链接 jvm.lib。您通常可以在 %ProgramFiles%\Java\jdk1.X.XX_XX\lib 中找到它,然后您可以将其添加到链接器输入设置中。

此外,您还需要在运行时加载 jvm.dll(并将其添加到延迟加载的 dll 中)。在 Windows 上,您可以从注册表中获取当前位置。查询 SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion当前运行时版本和SOFTWARE\JavaSoft\Java Runtime Environment\<version>\RuntimeLib对于 jvm.dll 的路径。

使用这些路径,您还可以检查系统上是否存在所需的运行时版本。

关于java - Visual C++ 错误 : LNK2019, LNK2028 和 LNK1120,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434096/

相关文章:

Java 缺少按钮文本

java - 将 String 设置为可点击的 URL

c++ - std::unordered_map 析构函数不释放内存?

c# - 对注册表进行碎片整理

c++ - 在 Visual Studio C++ 中执行简单 SQL 查询时出错

c++ - 带有字符串键和自定义值字段的 std::map

java - Jsoup Element.val() 解码编码的 html 内容

c++ - 从文件中删除特定记录(或数据)

c++ - 同一函数的 const 和非 const 版本 - 反模式?

java - 如何在java中读取doc和docx