在java中访问具有多个类的DLL

时间:2015-08-19 07:16:58

标签: java-native-interface jna

我必须访问我的Java应用程序中有多个类的第三方dll。我查看了http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/

但它只用一个类和一些方法来描述一个dll。如何访问dll中的每个特定类及其方法。这可能吗?

2 个答案:

答案 0 :(得分:1)

您需要在C兼容函数(extern "C")中包含所需的功能。

例如,如果我有一个C ++类,如下所示:

class Foo {
    Foo();
    ~Foo();
    void bar();
}

然后我需要在共享库中创建一些可以通过JNA访问的包装函数:

extern "C" void* create_foo() { return new Foo(); }
extern "C" void delete_foo(void *foo) { delete (Foo *)foo; }
extern "C" void bar(void *foo) { ((Foo *)foo)->bar(); }

如果你必须做很多这样的事情并且编译一些本机代码,你可能会发现使用SWIG是有用的。您可以自定义本机类映射到Java类的方式,反之亦然。

答案 1 :(得分:0)

您是否尝试过调整链接示例中的界面?我认为如果你使用loadLibrary(" otherClassName",...)创建类似的接口,你将能够从这个界面加载另一个类。

相关问题