当前位置:编程学习 > wap >>

请教关于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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,