c++ - 我的应用程序是否正在加载 dll 以使用 std::string?

标签 c++ windows dll static-libraries

我正在开发一个需要与 Windows XP 兼容的应用程序(是的......我知道......),我的同事们争辩说他们不想使用 std::string ,因为它可能加载一些dll可能改变代码行为。

我不确定他们在这里是对还是错。在某些时候,必须有一些可以加载应用程序的共同点。

鉴于应用程序必须尽可能自包含的上下文,是否需要此应用程序加载 dll 才能使用 STLstring 还是来自标准库?

此外,假设我使用 -static-libstdc++ 标志,可执行文件将增大到哪个数量级?

最佳答案

在 Windows 中,使用 CRT 库支持 STL。这些库要求在运行应用程序之前部署运行时 DLL。使用不同版本的 visual studio 编译代码将创建对特定版本的 CRT 的依赖。使用 vs2013 编译代码需要与 vs2010 大不相同的 CRT 版本。因此,您不能使用/将 STL 对象从一个 CRT 版本传递到另一个使用不同版本的 dll。请在使用 CRT 库之前阅读 Microsoft 文章。以下文章适用于 vs2013: http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx 我建议您使用 ATL:CString,它更容易实现,静态版本库也比 CRT 库紧凑得多。

关于c++ - 我的应用程序是否正在加载 dll 以使用 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808260/

相关文章:

c++ - 我如何使用 Google Test 在 main() 函数的特定位置调用特定的测试函数?

c++ - 我的内存在哪里?

windows - %* 在批处理文件中是什么意思?

delphi - 如何将 Bitmap 传递到 C++ 和 Delphi 中的 DLL 函数中?

c++ - 为什么我们不能定义一个指向 int 指针的低级 + 顶级 const 指针?

c++ - cpp 的 Qbasic 解释器

c++ - boost 中的分位数函数 (C++)

windows - 文件名带有 .在批处理文件中

c++ - boost addable 和 dll 的辅助功能错误

c# - 在 C# 中验证 .NET 程序集?