内部在具有不同版本的Visual Studio的静态LIB中使用STL

Use STL internally in a static lib with different versions of visual studio

本文关键字:LIB 静态 STL Studio Visual 内部 版本      更新时间:2023-10-16

我正在尝试将我的应用程序与构建的静态库链接到不同版本的Visual Studio(我正在使用VS2010,并且LIB使用VS2008构建)。静态LIB在内部使用STL,我会发现无法找到某些基本_STRING方法的链接错误。

我知道,如果静态LIB在其公共接口中使用STL,那么这是不可能的,因为STL对象是双手不兼容的。但这种情况并非如此。我正在调用的LIB的方法都没有使用STL,也没有将STL对象传递给LIB。但是在内部,静态LIB在其自身功能中使用STL。

看起来库中没有编译的STL代码,并且链接器正在尝试将STL链接到内部方法中。我的问题是有什么方法可以编译静态lib以静态链接与stl链接并在其中包含所有代码?

我应该提到我自己的应用程序也使用STL。但是似乎可以在两个版本中汇编两个版本,只要它们永远不会彼此传递。

如果要链接到 static 库,并且此库取决于标准C 库的版本 x ,则您的应用程序需要与版本 x 链接,除了您可能在应用程序中使用的版本 y

由于标准库的几个导出的符号名称,版本 x 和版本 y 将是相同的,您最终会出现链接器错误。

您可以将第三方库包装在DLL中吗?这将解决问题。