请教关于c++调用c++的dll返回字符串的问题
dll里面定义
__declspec(dllexport) char* __stdcall brands(){
char *p=new char[9];
strcpy(p,"测试字符");
return p;}
cpp的定义
QLibrary myDll("hikvision.dll");
if(!myDll.load()){
stShow -> setText("加载dll失败");
}
else{
stShow -> setText("加载dll成功");
typedef char (*FUN)();
FUN myAdd=(FUN) myDll.resolve("brands");
if(myAdd){
stShow -> setText(QString(myAdd()));
}
else{
stShow -> setText("没有找到函数");
}
}
if(myDll.isLoaded()){
myDll.unload();
}
用qt4做的哈。为啥返回的值是 X 呢。 --------------------编程问答-------------------- 你用char*存储中文?你先整点简单的,传英文好不? 有空看看关于字符编码,unicode啥的
再有,char*在dll中申请,却不管释放,也不好,要做到哪里申请哪里释放,跨模块间的字符串传递你也该看看 --------------------编程问答-------------------- 传 英文 返回的也是 "X".应该不存在编码。在main函数里面已经设置了 gb2312 --------------------编程问答-------------------- 没人啦?救命啊。指教 --------------------编程问答-------------------- 将stShow -> setText(QString(myAdd()));
改为
stShow -> setText(QString::fromLocal8Bit(myAdd()));
即可
补充:移动开发 , Qt