我在Visual Studio项目中使用外部库(Qpid Proton C ++)。 API包括以下方法:
container::connect(const std::string &url) {...}
我这样在我的代码中调用它:
container.connect("127.0.0.1");
但是在调试时,进入库的函数时,字符串会以错误的方式被解释,大小会有几百万个字符,而且内容也难以理解。
可能是什么原因造成的?
您需要将断点放在函数内部而不是函数声明级别,此处变量存在但尚未初始化。
为了防止有人遇到类似的问题,正如Alan Birtles在他的评论中提到的那样,一个可能的原因是让库和你的代码使用不同的C ++运行时,这次就是这种情况。
一般来说,如this page from Visual C++ documentation所述,
如果您使用的是CRT(C运行时)或STL(标准模板库)类型,请不要在使用不同版本的编译器编译的二进制文件(包括DLL)之间传递它们。
这正是发生的事情。