我的 Java 程序使用 JNA 调用以 C++ 编译的 DLL。DLL 从 Java 接收一些int
和double
值作为参数。从 Netbeans 运行时它工作正常,但是当我从命令行调用 Java .jar 程序时,C++ 程序收到垃圾:即等于 1 的 int 被接收为 64562352。当程序重复运行时,从 Java 发送 int 1 ,C++ dll 接收不同的数字:65631824、66011704、....
我使用 Windows 7、Netbeans 7.0.1、Java 1.7.0_01、Microsoft Visual C++ 2008、JNA 3.3.0 (b0)。
相关代码为:
爪哇:
public interface ClibLP extends Library {
enter code here`public double vectorC (int tipoprob, int nvar,
double numero);
}
public class LlamadorLP {
public static void main(String[] args) {
int tipoprob = 1;
int nvar = 1000;
double numero = 1.5;
double total = clib.vectorC(tipoprob, nvar, numero);
}
C++:
extern "C" __declspec(dllexport) double vectorC (int tipoprob, int nvar,
double numero);
double vectorC(int tipoprob, int nvar, double numero) {
printf("Estoy en la función C!\n");
printf("tipoprob=%d\n",tipoprob);
printf("nvar=%d\n",nvar);
printf("numero=%6.1f\n",numero);
return total;
}
非常感谢,马里奥。