最近、VC 6.0 で作業しているときに、いくつかの場所で非常に迷惑なエラーに遭遇しました。次のエラーが発生します: リンク中... nafxcwd.lib(afxmem.obj) : エラー LNK2005: "void * __cdecl 演算子 new(unsigned int)" (??2@YAPAXI@Z) はすでに LIBCMTD.lib( new. obj) nafxcwd.lib(afxmem.obj) : エラー LNK2005: "void __cdecl 演算子 delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMTD.lib(dbgdel.obj) デバッグ/DCap 実行ファイルで定義されています。致命的エラー LNK1169: 1 つ以上の多重定義されたシンボルが見つかりました 解決策: このようなエラーの場合、両方のリンクされたライブラリが同じ名前の関数を提供していることは明らかです。ただし、もちろん、LIBCMTD.lib は C ライブラリであるため、直接無視することはできません。この問題が発生する理由は、MFC のライブラリが C のライブラリと競合するためであり、それらのリンク順序を最初に nafxcwd.lib 、次に LIBCCMTD.lib に設定する必要があるためです。しかし、どちらもデフォルトのライブラリなので、順序を設定するにはどうすればよいでしょうか?解決策: 最初はそれらを無視してから、追加してください。つまり、[リンク] タブの [ライブラリを無視] に「nafxcwd.lib libcmtd.lib」と入力し、同じタブの「オブジェクト/ライブラリ モジュール」に「nafxcwd.lib libcmtd.lib」と入力します。このようにして、それらが追加される順序は、強制的に設定される順序になります。 ?
拡大する