2

新しいシステム用に持っているコードを再コンパイルしようとしています。これには、ソースコードがない(ヘッダーのみ)プリコンパイルされた静的ライブラリが含まれます。このライブラリは、古いランタイムライブラリを使用してVC++6.0以前でビルドされました。VC ++ 6.0を搭載した古いシステムでは、プログラムがビルドされて正常に実行されましたが、最近アップグレードしたため、VC ++ 6.0にアクセスできなくなり、Express 2008(9.0 w / SP)のみにアクセスできます。

ソリューションをビルドすると、コンパイルされますが、次のリンカーエラーが発生します。

1> libcpmtd.lib(xlock.obj):エラーLNK2005: "public:__thiscall std :: _ Lockit ::〜_ Lockit(void)"(?? 1_Lockit @ std @@ QAE @ XZ)はすでにNOREC.lib(track .obj)1> LIBCMT.lib(stdexcpt.obj):エラーLNK2005: "public:__thiscall std :: bad_cast :: bad_cast(char const *)"(?? 0bad_cast @ std @@ QAE @ PBD @ Z)はすでに定義されていますNOREC.lib(track.obj)1> LIBCMT.lib(stdexcpt.obj):エラーLNK2005: "public:__thiscall std :: bad_cast :: bad_cast(class std :: bad_cast const&)"(?? 0bad_cast @ std @@ QAE @ ABV01 @@ Z)NOREC.lib(track.obj)ですでに定義されています1> LIBCMT.lib(stdexcpt.obj):エラーLNK2005: "public:virtual __thiscall std :: bad_cast ::〜bad_cast(void) "(?? 1bad_cast @ std @@ UAE @ XZ)NOREC.lib(track.obj)ですでに定義されています1> LINK:致命的なエラーLNK1104:ファイル'libcp.lib'を開くことができません

この問題を克服する方法についてのアイデアは大歓迎です。

4

4 に答える 4

4

最後のリンクエラーから、libcp.libが見つかりません。このライブラリはVS2005で削除されまし/MTた。マルチスレッドバージョンで使用します。

http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.80%29.aspx

マルチスレッドバージョンは、フラグlibcpmt.libが付いた状態で自動的に取得されます。/MTあなたが使用している最初のエラーlibcpmtd.libで、同じもののデバッグバージョンがわかります。を使用していない場合、どのようにそれを取得しているかわかりません/MTd。(または、使用している場合は、libcp.lib両方ではなく、どちらか一方を使用する必要があるため、どのように参照されますか)

于 2012-05-30T20:53:18.097 に答える
1

リンカは、いくつかのシンボルが複数回定義されていることを通知しています。リンカを説得してターゲットイメージを生成するための総当たり攻撃は、ここで説明するように/ FORCE:MULTIPLEを使用することです。私はこのスイッチを数回使用していました。

于 2012-05-30T20:41:11.337 に答える
0

リンク:致命的なエラーLNK1104:ファイル'libcp.lib'を開くことができません

これはリンカーのバグです。LIBPATHにlibcp.libという名前の空のファイルを作成するだけです。

于 2012-07-25T18:03:13.663 に答える
-1

libcp.libインストールされているMSVisualStudio6.0にあります。

c:\Program Files\Microsoft Visual Studio\VC98\Lib\ 

ディレクトリ。

MSVS 2005/2008/2010それをlibディレクトリ(つまり)にコピーするだけでc:\Program Files\Microsoft Visual Studio 8\VC\lib\、すべてが正常にコンパイルされます。

于 2013-07-31T08:02:53.693 に答える