gpt4 book ai didi

c++ - 通过引用传递后字符串发生变化

转载 作者:行者123 更新时间:2023-11-28 02:57:35 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012(不支持/clr 的标准 C++)用 C++ 编写模拟项目,我遇到了以下问题。在某处的代码中,我通过引用传递了一个字符串:

theClassObject->Method("12345")

其中类中方法的定义是:

TheClass::Method(const std::string& STR) {..}

当我在调试期间检查 STR 的值时,它前面多了四个字节,例如“~#.a12345”,字符串的长度增加了这四个字节。在具有其他类似方法的代码的其他地方不会发生这种情况。

我错过了项目的某些编译器选项还是有其他原因我错过了?

我不确定我是否提供了所有需要的信息,但如果需要我可以。

提前致谢!

最佳答案

这就像模块边界问题一样大声叫喊,调用另一个 DLL 中的代码,该 DLL 使用不兼容版本的 std::string 或不兼容的编译器设置构建。就像 _HAS_ITERATOR_DEBUGGING。

唯一的解决方法是使用完全相同的编译器版本、C++ 库和build设置重新编译一切

跨模块边界公开 C++ 对象是一次危险的冒险。特别是 std 命名空间中的那些,尤其是最近的 C++11 给标准库实现带来了巨大的变化。真正无故障的 DLL 接口(interface)需要非常严格的措施,这种措施看起来很像 COM。

关于c++ - 通过引用传递后字符串发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com