在不同版本的Visual Studio静态库内部使用STL(Use STL internally i

2019-11-01 04:12发布

我想我的应用程序内置在不同版本的Visual Studio静态库(我使用VS2010和的lib是建立与VS2008)链接。 该静态库使用STL内部和我收到一些basic_string的方法不能发现链接错误。

我明白,如果静态库的公共接口使用STL,那么这是不可能的,因为STL对象是binarily不兼容。 但这种情况并非如此。 没有从LIB,我打电话使用STL和我传递没有STL对象到lib的方法。 但内部的静态库使用STL在它自己的功能。

它看起来像库没有编译到它的STL代码,链接器试图将STL链接到内部的方法。 我的问题是有没有什么办法来编译静态库静态对STL链接,包括它里面所有的代码?

我要指出,我自己的应用程序也使用STL。 但似乎在假设它们不会传到对方两个版本可以进行编译。

Answer 1:

如果您链接到一个静态库,这个库是依赖于C ++标准库的X版本,那么你的应用程序需要y您可以使用您的应用程序与版本X连锁,除了版本。

由于两者的几个出口符号名称,标准库的版本X和版本Ÿ将是相同的,你最终得到一个链接错误。

你可以换一个DLL的第三方库? 这将解决这一问题。



文章来源: Use STL internally in a static lib with different versions of visual studio