我必须访问我的Java应用程序中有多个类的第三方dll。我查看了http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/
但它只用一个类和一些方法来描述一个dll。如何访问dll中的每个特定类及其方法。这可能吗?
答案 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",...)创建类似的接口,你将能够从这个界面加载另一个类。