我在dll定义
void _declspec(dllexport)get(string &a){
 a="OK";
}
但我在外面调用时却弹出Debug Assertion Faild!

解决方案 »

  1.   

    导出函数的参数不要使用 C++类void _declspec(dllexport)get(char* a, int len){
     strncpy(a, "OK", len);
    }
      

  2.   

    楼上的谢了,但能说得更清楚一点吗?
     如果我一定要用string还有其它方法吗?
      

  3.   

    呵呵,这个涉及CRT 的内存是如何分配的了。我在
    http://community.csdn.net/Expert/topic/3980/3980923.xml?temp=.9605677这个帖子的回复里面描述了问题出现的原因,你可以参考一下,因为new 和delete 也是CRT从堆里面取的内存。其实最简单的解决办法就是krh2001(边城浪子) 说的不用string 类作参数。
    当然,你实在想用这样的动态类,就自己实现一个string 吧,在里面自己处理new 和delete 方法。就是太麻烦了。
      

  4.   

    如果一定要用的话, 那就是  Debug Assertion Faild!