我在这里从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类型吗?我在这里缺少什么?
谢谢