Visual C++ Error: LNK2019, LNK2028 and LNK1120

Visual C++ Error: LNK2019, LNK2028 and LNK1120

本文关键字:LNK2028 and LNK1120 LNK2019 C++ Error Visual      更新时间:2023-10-16

我正在开发一个基本的应用程序,用于创建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%Javajdk1.X.XX_XXlib中找到它,然后您可以将它添加到链接器输入设置中。

另外,您需要在运行时加载jvm.dll(并将其添加到延迟加载的dll中)。在Windows上,您可以从注册表中获得当前位置。当前运行版本号查询"SOFTWAREJavaSoftJava Runtime EnvironmentCurrentVersion","jvm.dll"路径查询"SOFTWAREJavaSoftJava Runtime Environment<version>RuntimeLib"。

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