0

アプリケーションを別のバージョンの Visual Studio でビルドされた静的ライブラリにリンクしようとしています (私は VS2010 を使用しており、lib は VS2008 でビルドされています)。静的ライブラリは内部で STL を使用しており、一部の basic_string メソッドが見つからないというリンカー エラーが発生しています。

静的ライブラリがパブリック インターフェイスで STL を使用している場合、STL オブジェクトはバイナリ互換性がないため、これは不可能であることを理解しています。しかし、そうではありません。私が呼び出している lib のメソッドはどれも STL を使用しておらず、STL オブジェクトを lib に渡していません。ただし、内部的に静的ライブラリは独自の関数で STL を使用します。

ライブラリに STL コードがコンパイルされていないようで、リンカが STL を内部メソッドにリンクしようとしています。私の質問は、静的ライブラリをコンパイルしてSTLに静的にリンクし、その中にすべてのコードを含める方法はありますか?

私自身のアプリケーションでも STL を使用していることに言及する必要があります。しかし、両方のバージョンが互いに渡されない限り、両方のバージョンをコンパイルできるようです。

4

1 に答える 1

2

静的ライブラリにリンクしており、このライブラリが標準 C++ ライブラリのバージョンXに依存している場合、アプリケーションで使用しているバージョンYに加えて、アプリケーションをバージョンXにリンクする必要があります。

標準ライブラリのバージョンXとバージョンYの両方のいくつかのエクスポートされたシンボル名が同じになるため、リンカー エラーが発生します。

サードパーティのライブラリを DLL でラップできますか? それは問題を解決するでしょう。

于 2012-10-30T20:30:54.547 に答える