スレッド作成時のリンクエラー

[戻る]
く〜 2003/02/21(金) 18:29:54
VC++でマルチスレッドのSDKプログラムを作成中です。
_beginthreadと_endthreadを使用して実現しようと考えています。
参考にさせていただいているホームページでは、

1.コンパイラの設定でコード生成をマルチスレッドにする
2.Libcmt.libとMsvcrt.libをリンクする
3.ソースファイルにprocess.hをインクルードする

となっていたので、わかる範囲でそのように設定したつもりなの
ですが、以下のようなエラーが出力されます。

error LNK2005: "private: __thiscall type_info::type_info
(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は
既に libcmt.lib(typinfo.obj) で定義されています。

LNK2005: "private: class type_info & __thiscall type_info
::operator=(class type_info const &)" (??4type_info@@AAEA
AV0@ABV0@@Z) は既に libcmt.lib(typinfo.obj) で定義されています。

LNK2005: _malloc は既に libcmt.lib(malloc.obj) で定義されています。

 同じようなエラーが多数・・・

warning LNK4098: defaultlib 'LIBCD' は他のライブラリの使用と
競合しています。/NODEFAULTLIB:library を使用してください。

fatal error LNK1120: 外部参照 1 が未解決です。


Libcmt.libとMsvcrt.lib以外でリンクしているライブラリは、
ComCtl32.libです。
なにか設定がまずいのでしょうか?
使用している開発環境はVC.NETです。
どなたか思いつくことがあれば、ご指導願います。

YuO [E-Mail] 2003/02/21(金) 19:11:52
> 2.Libcmt.libとMsvcrt.libをリンクする

CRT関連ライブラリはコンパイラスイッチで自動的にリンクされるので,
明示的にリンクする必要はないです。

LIBCMT.LIBはMulti-Thread用の通常のCRTライブラリで,
MSVCRT.LIBはCRTとしてMSVCRT.DLLを利用するためのImport-Libraryですから,
識別子が競合するのは当然です。

古いスレッドには追加発言できません。