4
cl -MT -DSFML_STATIC main.cpp freetype.lib gdi32.lib glew.lib jpeg.lib openal32.lib opengl32.lib sfml-audio-s.lib sfml-graphics-s.lib sfml-network-s.lib sfml-system-s.lib sfml-window-s.lib sndfile.lib winmm.lib

結果は次のとおりです。

sfml-graphics-s.lib<Color.cpp.obj> : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.obj

RuntimeLibrary を指定するにはどうすればよいですか?

4

2 に答える 2

1

プロジェクト設定で MT_StaticRelease を選択した場合、使用するすべてのライブラリでもこのパラメーターを使用する必要があります。残念ながら、SFML は MD_DynamicRelease (最も一般的で安全な選択) でコンパイルされているため、eXpl0it3r のライブラリは /lib. ただし、eXpl0it3r は MT_StaticRelease でコンパイルされた SFML ライブラリも提供します。

さらに、user32.lib と advapi32.lib をリンクする必要がありました

cl -EHsc -FC -Zi -MT -DSFML_STATIC main.cpp advapi32.lib freetype.lib gdi32.lib glew.lib jpeg.lib openal32.lib opengl32.lib sfml-audio-s.lib sfml-graphics-s.lib sfml-network-s.lib sfml-system-s.lib sfml-window-s.lib sndfile.lib user32.lib winmm.lib
于 2015-01-21T06:43:06.423 に答える
1

おそらく、ランタイム ライブラリのマルチスレッドで動的なリリース バージョンが必要です。/MD フラグを使用します。リンクするランタイム ライブラリのバージョンを制御するフラグの詳細については、こちらを参照してください。

問題は、sfml-graphics-s.lib がランタイム ライブラリのマルチスレッドで動的なリリース バージョンに対してリンクされているのに対し、コマンド ラインではそのライブラリのマルチスレッドで静的なリリース バージョンに対してリンクするように指示されていることです (/ を使用しています)。 MTスイッチ)。/MT を /MD に置き換えると、競合が解決されます。

于 2015-01-21T06:42:54.097 に答える