如何使用JNA访问Java代码中的DLL方法?
问题描述:
通过运行System.loadLibrary("myAPI")
,我验证了DLL文件“myAPI.dll”可以成功加载到我的Eclipse Java项目中。现在我需要从Java代码中调用此DLL文件中指定的方法。为此,我将JNA添加到了我的Java项目中。然后我写了下面给出的代码片段,它应该能够获得类IProject
和ProjectFactory
(在DLL文件中指定)的实例。如何使用JNA访问Java代码中的DLL方法?
我仍然不明白如何正确实施这与JNA。我检查了不同的线程,例如this one,但我检查的人没有提供答案。任何帮助,高度赞赏。谢谢。
import com.sun.jna.Library;
import com.sun.jna.Native;
public class MyClass {
public interface myAPI extends Library {
//...
}
void LoadProj() {
myAPI api = (myAPI) Native.loadLibrary("myAPI",myAPI.class);
String fileName = "xxx.sp";
IProject project; // this is wrong but shows what I am trying to do
try {
project = ProjectFactory.LoadProject(fileName);
}
catch (Exception ex) {
MessageBox.Show(this, ex.Message, "Load failure");
}
}
}
答
上面提到如果没有Java类或Java源代码隐藏这个DLL内(这是......怪)的链接,那么它永远行不通这条路。你不能实例化C#类或使用C#接口。 MessageBox.Show(
也不是Java,它是Windows Forms代码。
你面临什么错误? – Santosh 2012-01-28 13:16:14
查看http://en.wikipedia.org/wiki/Java_Native_Access上的示例,它们非常简洁。 – Perception 2012-01-28 13:17:31
这是您在一小时内发布在整体主题上的第三个问题。为了学会自己做到这一点,你将不得不开发自己的能力来处理文档和示例,并自己完成它。就我而言,如果看起来他们没有做出自己的努力,我就不太愿意帮助别人。另外,“我不知道如何实施”不是一个好的论坛问题。如果您需要教程,请在网上搜索教程。如果你有一个特定的问题,请在这里发帖。 – arcy 2012-01-28 13:23:12