【发布时间】:2012-02-28 16:36:19
【问题描述】:
我正在为一个小型应用程序使用 Java。它是对现有 MFC 项目的重写。我需要更改一个现有的 dll 以启用使用 JNI 从 Java 进行访问。所有这些 Java 东西对我来说都是新的,所以当我阅读其他论坛帖子时,我遇到了一些麻烦并且感觉相当密集。在现有的 dll 中,我有一个这样的函数:
extern "C" __declspec(dllexport) bool Create()
{
return TRUE;
}
愚蠢的提问时间。如何正确设置它以由 Java 调用?
我试过了:
JNIEXPORT jboolean JNICALL Create()
{
return TRUE;
}
我包括 jni.h 并且一切编译正常。但是,当我从 Java 调用它时,我得到 UnsatisfiedLinkError。我使用这个从 Java 调用它:
public static native boolean CreateSession();
System.load("D:\\JavaCallTest.dll");
Create();
有人可以将我推向正确的方向吗?我真诚地感谢任何帮助。
谢谢,
尼克
【问题讨论】:
-
另外,您可以使用 JNA 而不是 JNI,因为您有一个可以由 JNA 加载的 C dll。
-
请贴出抛出的异常...
-
使用 javah 生成 C 头文件,正如 Jörn Horstmann 在下面提到的那样——或者完全避免使用 JNI。一个简单的替代方案是 JNA。
-
感谢您的帮助。我曾考虑过使用 JNA,但我想将任何额外的东西保持在最低限度,所以我认为我最好使用 JNI。
标签: java dll java-native-interface