プロが教えるわが家の防犯対策術!

LINK : warning LNK4098: defaultlib 'LIBC' conflicts with use of other libs; use /NODEFAULTLIB:library

というのがでるんですけど、もともとリンクしているLIBCというライブラリ?と、関数がかぶってしまっているためなんでしょうか。
/NODEFAULTLIBオプションを使え?みたいなことを言ってますが、
cl /?
で調べてもそんなオプションありませんし。
この場合の解決法のご教授をお願いします。

A 回答 (2件)

コマンドラインを書いてもらえると問題が特定しやすいです。



ちなみに、/NODEFAULTLIBは以下のように指定します。

cl main.cpp other.lib /MT /link /NODEFAULTLIB:libc.lib
    • good
    • 0
この回答へのお礼

すみませんうっかり書き忘れてしまいました。
書き足しができない点でここはちょっと不便ですね・・。

cl test.c /MT

これでできました。
LIBCMT.LIBは、普通のリンクではなく/MTオプションでしなければならないということは知りませんでした。
/MTはLIBC.LIBを自動でデフォルトでなくする機能まで備えているようで、/NODEFAULTLIBは今回は省略可能だったようです。

ありがとうございました。

お礼日時:2005/07/30 20:16

もしVisual C++の統合環境を使用しているのであれば、そのエラーメッセージをクリックしてから[F1]を押すとエラーメッセージに関する解説が表示されるので、そちらを参照してください。



またエラーメッセージ中には「/NODEFAULTLIBを使え」という意味合いのことが書かれていますが、これは「その競合するライブラリを使う必要があるのならそうせよ」という意味です。

ライブラリの使用が競合する原因はたいていライブラリの指定方法の間違いなので、/NODEFAULTLIBでエラーメッセージを抑制するのではなく、ライブラリの指定方法のほうを修正することをまず考えてください。

非標準ライブラリや対象バージョンが異なるライブラリをリンクする場合は/NODEFAULTLIBが必要になることもありますが、そうでない場合は/NODEFAULTLIBを使っても別のエラーメッセージが発生したり、実行時エラーが発生する原因になります。
    • good
    • 0
この回答へのお礼

Visual C++はないです・・。
すべてお金のかからないツールを使っています。

/MTが自動で/NODEFAULTLIBを指定しているのではなくて、/NODEFAULTLIBの作業自体が必要ないということですか。

今までライブラリの競合は気にしたことがなかったので勉強になりましたどうもです。

お礼日時:2005/07/30 20:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!