V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dluteddy
V2EX  ›  Java

JNA 调用 C++导出的 DLL

  •  
  •   dluteddy · 2018-12-04 10:27:43 +08:00 · 1476 次点击
    这是一个创建于 2191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要使用 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 来调用呢?如何进行参数的传递?麻烦大神赐教,非常感谢。

    frienmo
        1
    frienmo  
       2018-12-04 21:14:20 +08:00
    你关键词搜错了吧?应该是 JNI,不是 JNA 吧。
    我当时用的是 Swig 从 C++自动生成对应的 Interfaces
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5774 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:22 · PVG 11:22 · LAX 19:22 · JFK 22:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.