今天遇到一个问题,在一个dll工程中定义了一个返回值为string,参数为string的函数,然后在一个测试工程中调用,Release模式下一切正常Debug模式下整个函数的执行到return之前都毫无问题,然而在函数return后函数结束时总是堆栈错误崩溃,试了许久之后发现将参数改为char *就可以了,然后一搜发现大家都遇到了类似的问题,那就是:不要跨dll传递STL容器,string, vector, list等,导出的dll一定要用标准数据类型。
参考文章:
C++中string跨DLL失败解决途径:https://www.cnblogs.com/abella/p/9582549.html
string 跨模块作为参数传递的异常: https://blog.csdn.net/weixin_34204722/article/details/89823229
调用其他DLL时传递vector和string的问题:https://bbs.csdn.net/topics/370217758
在DLL间或者DLL与EXE之间传递vector对象或指针的问题:https://blog.csdn.net/cbnotes/article/details/38555875