我正在开发一个需要与 Windows XP 兼容的应用程序(是的......我知道......),我的同事们争辩说他们不想使用 std::string
,因为它可能加载一些dll
,可能改变代码行为。
我不确定他们在这里是对还是错。在某些时候,必须有一些可以加载应用程序的共同点。
鉴于应用程序必须尽可能自包含的上下文,是否需要此应用程序加载 dll
才能使用 STL
或 string
还是来自标准库?
此外,假设我使用 -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/