Java函数接受使用JNA从c ++函数返回的变量的垃圾值

时间:2017-05-11 05:53:36

标签: java c++ java-native-interface native jna

我在这里从JAVA调用 giveIntGetInt(int a)函数。
C ++ DLL

 int simpleDLL::giveIntGetInt(int a)  
          {
             int result = a *2;
            return result;
           }

使用JNA调用C ++函数的JAVA方法

public class Main {
    public interface simpleDLL extends Library {

        simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary(
            (Platform.isWindows() ? "simpleDLL" : "simpleDLLLinuxPort"), simpleDLL.class);

        int giveIntGetInt(int a);       // int giveIntGetInt(int a);

    }

    public static void main(String[] args) {
        System.loadLibrary("simpleDLL");
        simpleDLL sdll = simpleDLL.INSTANCE;


        int a = 3;
        int result1 = sdll.giveIntGetInt(a); 
        System.out.println("giveIntGetInt("+a+"): " + result1);


    }
}

输出

  

giveIntGetInt(3):181972

当结果应 6 时,为什么我得到垃圾值?我正确地将Java类型映射到Native类型吗?我在这里缺少什么?

谢谢

0 个答案:

没有答案