1

Visual Studio 6 から Visual Studio 2010 に移植しようとしているプロジェクトがあります。

プロジェクトは、プリコンパイルされたサード パーティの .LIB ファイルに依存しています。このサードパーティ ライブラリには、.H ヘッダー ファイルのみが含まれます (.CPP ファイルは含まれません)。

Visual Studio 2010 ソリューションに簡単にインポートしたところ、リンク時に多くのエラーが発生しました。

これらのエラーの一部は、サード パーティの .lib ファイル「ServerToolkitRuntimeLIB.LIB」を参照しています。

ここに私のビルドの出力からの小さなスニピットがあります:

1>ServerToolkitRuntimeLIB.LIB(SerialIO.obj) : error LNK2001: unresolved external symbol "void  __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCConversions.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCMemoryAS.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCAddressSpace.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCServer.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)

サードパーティのライブラリを再構築するためのソースがなければ、私はここで途方に暮れていますか、それともここで何か他のことが起こっている可能性がありますか?

前もって感謝します。

編集: サードパーティの .lib は、もともと Visual Studio 6.0 でコンパイルされていました

4

2 に答える 2

1

VS6 を使用している場合は、そこで DLL を作成して、その .lib ファイルにリンクし、必要なシンボルをエクスポートすることができます。

次に、.lib を使用せずに、VS 2010 プロジェクトでその dll を動的にリンクできます。

于 2012-10-11T09:21:51.980 に答える
0

サードパーティのライブラリは、VS2010 から削除された VS6 の内部実装に依存しているため、通常はソースなしでは使用できませんが、使用にはトリッキーな方法があります。

通常、この実装関数はすべて VS6 のオープン ソースです。その実装を確認し、独自のバージョンを実装してそれに対してリンクできます。単純なリンクで問題が解決しない場合は、実装を別の DLL としてコンパイルし、それに対してリンクする必要があります。

于 2012-10-11T09:04:15.133 に答える