传递给方法时std :: string不同

时间:2019-03-11 09:44:26

标签: c++ visual-studio qpid

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

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

我在代码中这样称呼它:

container.connect("127.0.0.1");

但是在调试时,进入库的功能时,会以错误的方式解释字符串,该字符串的大小为数百万个字符,并且内容难以理解。

这可能是什么原因?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

以防万一有人遇到类似的问题,就像Alan Birtles在他的评论中提到的那样,一个可能的原因是库和您的代码使用了不同的C ++运行时,而事实就是这种情况。

通常,如this page from Visual C++ documentation中所述,

  

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

这正是正在发生的事情。