传递给方法时,std :: string是不同的

问题描述 投票:-1回答:2

我在Visual Studio项目中使用外部库(Qpid Proton C ++)。 API包括以下方法:

container::connect(const std::string &url) {...}

我这样在我的代码中调用它:

container.connect("127.0.0.1");

但是在调试时,进入库的函数时,字符串会以错误的方式被解释,大小会有几百万个字符,而且内容也难以理解。

可能是什么原因造成的?

c++ visual-studio qpid
2个回答
1
投票

您需要将断点放在函数内部而不是函数声明级别,此处变量存在但尚未初始化。


0
投票

为了防止有人遇到类似的问题,正如Alan Birtles在他的评论中提到的那样,一个可能的原因是让库和你的代码使用不同的C ++运行时,这次就是这种情况。

一般来说,如this page from Visual C++ documentation所述,

如果您使用的是CRT(C运行时)或STL(标准模板库)类型,请不要在使用不同版本的编译器编译的二进制文件(包括DLL)之间传递它们。

这正是发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.