我正在构建一个必须使用 Java 库但需要生成 CLR DLL 的应用程序,所以我使用的是 JNI。
DLL 可以正常编译 32 位,但会产生 64 的链接器错误:错误 LNK2001: 无法解析的外部符号 "extern "C" long __cdecl JNI_CreateJavaVM(struct JavaVM_ * *,void * *,void *)" (?JNI_CreateJavaVM@@$ $J0YAJPEAPEAUJavaVM_@@PEAPEAXPEAX@Z)
我认为问题出在 jvm.lib 上,因为在库路径中没有它会为 32 位产生相同的错误。jvm.lib 架构是特定的吗?我看到有人遇到相反的问题(针对 64 编译,针对 32 出现类似错误),他通过安装 32 位 JDK 解决了这个问题。但是,尝试在我的 32 位机器上安装 64 位 JDK 会引发“无效的 win32 应用程序”错误。
任何想法如何让它编译?