最近、マルチプロジェクトVisual Studioソリューションを変換して、各プロジェクトに.libではなく.dllを使用するようにしました。ただし、例で述べたように、各プロジェクトに対してリンカーの警告が表示されます。 MSDNは、これに関してそれほど役立つものではありませんでした。これはなぜですか、どうすれば解決できますか?
警告2警告LNK4075: '/ OPT:ICF'の指定により、 '/ EDITANDCONTINUE'を無視していますLudoCamera.obj
「編集して続行」のサポートまたは最適化を行うことができます。通常、デバッグビルドには「編集して続行」、リリースビルドには最適化を行います。
編集して続行すると、デバッグ中にコードを変更し、プログラムを実行し続けることができます。コードも最適化する必要がある場合はサポートされません。
私もこの問題を抱えていました。 [プロジェクトのプロパティ]を開き、[C/C++]タブの[全般]をクリックしました。 「Debug Information Format」というオプションがあり、これをProgram Database(/ Zi)に変更しましたが、警告が表示されなくなりました。
また、VS2008プロジェクトを.libから.dllに変換するときにこの警告が表示され、回避策は、Debug Win32構成のリンカー/最適化設定をデフォルトから次のように変更することでした。
参照=参照されていないデータを保持(/ OPT:NOREF)
COMDAT折りたたみを有効にする=冗長COMDATを削除しない(/ OPT:NOICF)
私はそれが何であるかを知っています、彼らはdllがリリースバージョンではありません。リンカはまだデバッグビルドであると考えていると思います。デバッグビルドは、デバッグがまだ有効になっているときにデバッグ編集機能と継続機能を使用します。
ボブ。
両方のプロジェクトの「デバッグ情報形式」を「プログラムデータベース(/ Zi)」として設定する必要があります。例えば。警告が次の場合:
警告LNK4075:「/ OPT:ICF」の指定により「/ EDITANDCONTINUE」を無視D:\ mypath\project1\project1.obj project2
次に、両方のproject1とプロジェクトのプロパティ。次のように設定します。
プロジェクトプロパティ->構成プロパティ-> C/C++->一般->デバッグ情報フォーマット、「プログラムデータベース(/ Zi)」として設定します。