3

誰かがこれについて考えを持っていますか?リンカのエラーは、私の操舵室、特にこのようなものからは程遠いものです。

含めるべき情報は他にありますか?

1>Linking...
1>freeglut_static.lib(freeglut_window.obj) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __heap_alloc already defined in LIBCMT.lib(malloc.obj)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc already defined in LIBCMT.lib(recalloc.obj)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __msize already defined in LIBCMT.lib(msize.obj)
1>LIBCMTD.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc already defined in LIBCMT.lib(malloc.obj)
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in LIBCMT.lib(dbghook.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_amblksiz already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_amblksiz already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_find_block already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_free_block already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype_l already defined in LIBCMT.lib(isctype.obj)
1>LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype already defined in LIBCMT.lib(isctype.obj)
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
4

3 に答える 3

8

異なるCRTライブラリ設定で構築されたプロジェクトをリンクしているようです。1つはマルチスレッド、もう1つはマルチスレッドデバッグです。すべてのプロジェクトの設定を調整して、ライブラリとまったく同じフレーバーを使用すると、問題が解決するはずです。

于 2010-02-14T00:38:28.307 に答える
2

通常、リリースビルドでLIBCMTDをプルしようとはしません。これは、LIBCMTのデバッグバージョンです。

リリースビルドが、デバッグでビルドされたものにリンクしようとしているようです。ビルドの依存関係が壊れている可能性があります(または、プロジェクトが通常はバラバラにビルドされている場合は、手動でリリースするものを再構築できませんでした)。

小売用に再構築されなかったのはfreeglut_static.libである可能性が高いようです。そうでない場合は、すべてのビルド製品(* .obj、*。lib、*。pch、*。pdb)を削除してみてください。もちろん、生成しないものを削除しないように注意してください。サードパーティのライブラリ、など。次に、リリースだけをビルドします。

于 2010-02-14T00:48:10.783 に答える
0

/EDITANDCONTINUE他のコメントに追加するには:リリースビルドで「編集して続行」を使用しないでください。これは、再構築時間を短縮できるため、デバッグ時に便利な機能です。ただし、これは、実行可能ファイルを最適化されていない形式でパックすることによって行われます。

/ OPT:ICFオプションは同一の関数本体を折りたたむため、警告が表示されます。これは、2つの関数が同じアドレスを共有することを意味します。明らかに、これは、そのうちの1つだけを編集および置換できないことを意味します。

于 2010-02-15T13:02:32.657 に答える