JNA 调用 C++导出的 DLL

2018-12-04 10:27:43 +08:00
 dluteddy

现在需要使用 java 调用一个 C++导出的 dll。

C++中的方法声明如下:

ISample* __stdcall GetSample();

ISample 本身是 C++中声明的一个接口,也就是个纯虚类。我在 Java 中对应的代码如下。

public interface ISample extends Library {

ISample instance = (ISample) Native.loadLibrary("apiname", ISample.class);

public Pointer GetSample(); }

现在这个方法是可以调用成功的,但是我要如何操作返回的这个 ISample 呢,类型是 Pointer,只有一个地址。。。

在网上能找到一些关于 JNA 的资料,基本上都是简单类型的传输,或者结构体,像这种 C++定义的类,要如通过 JNA 来调用呢?如何进行参数的传递?麻烦大神赐教,非常感谢。

1474 次点击
所在节点    Java
1 条回复
frienmo
2018-12-04 21:14:20 +08:00
你关键词搜错了吧?应该是 JNI,不是 JNA 吧。
我当时用的是 Swig 从 C++自动生成对应的 Interfaces

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX