Runtime 不要の プログラム作成
Visual Studio .Net Framework 以降では、デフォルト構成では、再頒布可能なRuntimeをインストールしないと使えない実行ファイルが生成されるのですが、これを回避するために、プロジェクトのプロパティを色々変更する必要があります。
1. まず、ランタイムライブラリの形式を マルチスレッド (/MT) に変更する。
2._AFX のつくプリプロセッサが定義されている場合は、除外する。
継承されている場合は、継承のチェックをはずす。
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は 既に LIBCMT.lib(new.obj) で定義されています。 nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は 既に LIBCMT.lib(delete.obj) で定義されています。 Release/test.exe : fatal error LNK1169: 1つ以上の複数回定義されている シンボルが見つかりました。 |
3.上記のようなエラーが出ている場合は、
リンカの入力に、Nafxcw.lib Libcmt.lib(デバッグ版は:Nafxcwd.lib Libcmtd.lib) を追加する。
関連サイト:
[PRB] C ランタイム ライブラリを MFC ライブラリより先にリンクしたときの LNK2005 エラー
Comments