如何从使用/ GL选项编译的obj文件中生成COFF?

时间:2012-12-11 17:30:45

标签: visual-c++ linker visual-studio-2012 static-libraries coff

我有一个使用旧版MSVC构建的3d派对静态库,我成功将其链接到MSVC10中的应用程序(VisualStudio2010)。现在我升级到MSVC11,我无法链接它:

  

2> LINK:致命错误C1047:对象或库文件'MyLib.lib'是   用比其他对象更旧的编译器创建;重建旧物件   和图书馆

我想这是因为lib是用/ GL选项编译的,所以目标文件实际上并不包含COFF,而是一些中间格式。 我没有库源代码来重新编译,我不想用它来动态链接它。

有没有办法 - 也许是一些未记录的技巧 - 将这些obj“重新编译”到COFF并最终将它们链接到MSVC11应用程序?

1 个答案:

答案 0 :(得分:1)

即使这是可能的,您也不想这样做:链接针对不同版本的CRT构建的目标文件通常会以泪流满面。更具体地说,如果两个这样的目标文件都使用C ++标准库,则几乎可以肯定您将违反一个定义规则(ODR)。

如果无法使用Visual C ++ 2012重建模块,则应将其封装在使用Visual C ++ 2010构建的动态库中,并避免在该DLL的接口中使用任何C ++标准库类型。