gpt4 book ai didi

c++ - 静态库是否避免了名称重整问题?

转载 作者:行者123 更新时间:2023-11-30 03:06:46 26 4
gpt4 key购买 nike

我有一个用 Visual Studio 2003 SP1 编写的 C++\MFC 应用程序链接到外部静态库“SomeExtStaticLib.lib”。我还包括随“SomeExtStaticLib.lib”一起提供的头文件,以在我的应用程序中创建对象。

SomeExtStaticLib.lib 是一个用VC6构建的静态库。

现在,我正在将我的应用程序迁移到 Visual Studio 2008。

我有一个非常基本的问题。

我是否也应该将“SomeExtStaticLib.lib”迁移到 VS2008 编译的?当我尝试在我的 VC9 编译应用程序中使用这个 VC6 编译的“SomeExtStaticLib.lib”时,它没有给出任何链接器错误。我期待至少有一些名称修改问题。

静态库是否消除了名称重整问题?

最佳答案

问题不在于静态链接还是动态链接,也不在于名称加工。问题是所有使用的二进制兼容性之一在界面中。因此,例如,除非我大错特错,否则std::string 的定义在 VC6 和 VC9 之间发生了变化,带有不同的布局。因此,如果任何代码使用 std::string,您将拥有重新编译,或在运行时出现奇怪且无法解释的错误。

一般来说,最好假设没有二进制兼容性不同版本的编译器,甚至不同的编译涉及选项,除非供应商另有保证。 (虽然一些常识是有序的:您可以自由组合仅例如,控制警告。但要注意 /D 会导致添加调试要生成或不生成的代码。)

关于c++ - 静态库是否避免了名称重整问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6342171/

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