dluteddy
V2EX  ›  Java

JNA 调用 C++导出的 DLL

  •  
  •   dluteddy · Dec 4, 2018 · 1867 views
    This topic created in 2727 days ago, the information mentioned may be changed or developed.

    现在需要使用 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  
       Dec 4, 2018
    你关键词搜错了吧?应该是 JNI,不是 JNA 吧。
    我当时用的是 Swig 从 C++自动生成对应的 Interfaces
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3017 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:15 · PVG 15:15 · LAX 00:15 · JFK 03:15
    ♥ Do have faith in what you're doing.