【发布时间】:2012-04-03 15:04:02
【问题描述】:
问题说明了一切。
我了解 VC11 目前仅处于测试阶段,但我要问的是:
- 尝试链接使用 vc10 编译的封闭源代码(如果可能,广泛使用)库的经验
- Microsoft 的规范明确指出,如果是或否,vc11 将能够与 vc10 库链接。
我说的只是 C++ 的情况。
【问题讨论】:
-
是静态库还是动态库?
-
我要的是所有情况,所以请随时解释在哪种情况下可以将这些二进制文件链接在一起。
-
@Klaim 我没有来自 Microsoft 的任何具体信息,但我不明白为什么您不能静态或动态链接到在 VC11 上使用 VC10 构建的库。对于静态链接,您需要包含头文件和库,对于动态链接,您需要 DLL:它们都不依赖于 Visual Studio 版本。
-
@Lirik 如果更改了 C++ ABI,生成的修饰符号名称可能会有所不同。由两个不同版本使用共享运行时构建的同上 DLL/EXE 可能会在不同的堆上分配和释放内存,因此您需要小心在它们之间交换对象的所有权(这可能包括 C++ 中的隐式销毁等)
-
@Link:您从来没有在为一个 MSVC 版本和另一个版本编译的 C++ 库之间链接(动态或静态)。标准库不兼容。另一方面,如果您提供两个运行时(或与 msvcrtXXX.lib 静态链接),C 库可能会正常工作。
标签: c++ visual-c++ compiler-construction linker