0

我正在尝试将我的应用程序与在不同版本的 Visual Studio 中构建的静态库链接(我使用的是 VS2010,该库是用 VS2008 构建的)。静态库在内部使用 STL,我收到链接器错误,无法找到一些 basic_string 方法。

我知道如果静态库在其公共接口中使用 STL,那么这是不可能的,因为 STL 对象是二进制不兼容的。但这种情况并非如此。我调用的库中的所有方法都没有使用 STL,并且我没有将 STL 对象传递给库。但在内部,静态库在它自己的函数中使用 STL。

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

我应该提到我自己的应用程序也使用 STL。但似乎这两个版本都可以编译,前提是它们永远不会相互传递。

4

1 回答 1

2

如果您要链接到静态库,并且此库依赖于标准 C++ 库的版本X ,那么除了您可能在应用程序中使用的版本Y之外,您的应用程序还需要与版本X链接。

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

你能把第三方库包装在一个DLL中吗?那将解决问题。

于 2012-10-30T20:30:54.547 回答