質問: libcmt.libをリンクしてコンパイルすると警告が。 link : warning lnk4098: defaultlib 'libc' conflicts with use of other libs; use /nodefaultlib:library というのがでるんですけど、もともとリンクしているlibcというライブラリ?と、関数がかぶってしまっているためなんでしょうか。 /nodefaultlibオプションを使え?みたいなことを言ってますが、 cl /? で調べてもそんなオプションありませんし。 この場合の解決法のご教授をお願いします。
回答: もしvisual c++の統合環境を使用しているのであれば、そのエラーメッセージをクリックしてから[f1]を押すとエラーメッセージに関する解説が表示されるので、そちらを参照してください。 またエラーメッセージ中には「/nodefaultlibを使え」という意味合いのことが書かれていますが、これは「その競合するライブラリを使う必要があるのならそうせよ」という意味です。 ライブラリの使用が競合する原因はたいていライブラリの指定方法の間違いなので、/nodefaultlibでエラーメッセージを抑制するのではなく、ライブラリの指定方法のほうを修正することをまず考えてください。 非標準ライブラリや対象バージョンが異なるライブラリをリンクする場合は/nodefaultlibが必要になることもありますが、そうでない場合は/nodefaultlibを使っても別のエラーメッセージが発生したり、実行時エラーが発生する原因になります。