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

C++ 传递给方法时,std::string是不同的,c++,visual-studio,qpid,C++,Visual Studio,Qpid,我在VisualStudio项目中使用外部库QPID质子C++。 API包括以下方法: container::connect(const std::string &url) {...} 我在代码中这样调用它: container.connect("127.0.0.1"); 但是,当调试时,进入库函数,字符串被错误地解释,大小约为数百万个字符,内容无法理解 原因可能是什么?您需要将断点放在函数内部,而不是放在函数声明级别,该级别存在变量,但尚未初始化。以防有人遇到类似问题,正如Alan

我在VisualStudio项目中使用外部库QPID质子C++。 API包括以下方法:

container::connect(const std::string &url) {...}
我在代码中这样调用它:

container.connect("127.0.0.1");
但是,当调试时,进入库函数,字符串被错误地解释,大小约为数百万个字符,内容无法理解


原因可能是什么?

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

以防有人遇到类似问题,正如Alan Birtles在评论中提到的,一个可能的原因是库和代码使用不同的C++运行时,而这次是这样的。 总的来说,如中所述

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


这就是发生的事情。

运行没有经过调试符号的优化代码或代码,运行一个不了解STD::String的调试器,使用不同的C++运行时,许多其他的东西。你有没有试着让你的程序打印字符串,看看它是否真的正确?请提供一个答案,我就是这么做的。变量确实已初始化,并且与我传递的字符串具有相同的地址。在尝试执行该方法后,运行该应用程序的时间过长会给我一个异常向量。在这种情况下,您的代码可能存在另一个问题,但无法使用您提供的元素进行诊断。