用VS2010生成dll,代码如下:
#include "iostream"
using namespace std;
extern "C"_declspec(dllexport) int Add(int a,int b);
int Add(int a,int b){
const char * pcTest = "99";
string test(pcTest);
return a+b;
}
然后用jna调用,发现在Windows 7调用成功。我又把它放在在Windows server 2008上调用就失败了。报如下的错:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load libra
y 'TestDll': ???????¨
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:164)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:237)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:374)
at com.sun.jna.Native.loadLibrary(Native.java:359)
at com.eebbk.bmd.Decoder.<clinit>(Decoder.java:37)
at com.eebbk.bmd.DecoderTest.main(DecoderTest.java:24)
经过多番实验验证,把
const char * pcTest = "99";
string test(pcTest);
这两句代码去掉重新生成dll,这样windows7 和 Windows server 2008就可以都调用成功了。
跪求各位大神帮助,
我写的这个dll,肯定会使用到 字符串 char*转string类型,但是就是因为这个转换导致了bug。
各位大神给给建议