08/02/07 14:31:04
質問です。
VC6.0で自前のライブラリをまとめたStatic Link Libraryを作っています。
そのライブラリを実際に他のプロジェクトで使う際、リンクのところで以下のように躓きました。
・すでに LIBCMTD.lib(crt0dat.obj) で定義されています
これを筆頭に、大量にリンク警告がでました。
調べたところ
URLリンク(m--takahashi.com)
libの方はシングルスレッドで。テストプロジェクトのほうはマルチスレッドでコンパイルしているのが問題のようでした。
両方マルチスレッドにしたところ…
・"libcmt.lib" は他のライブラリの使用と競合しています
今度はこれだけでました。
調べたところ
URLリンク(m--takahashi.com)
libがReleaseコンパイルで、テストプロジェクトがDebugコンパイルなのが悪いようでした。
libをRelease版とDebug版の両方をつくり、適切にリンクするようにしたところ、エラーがきえました。
ここで疑問なのですが、今後の汎用性を考えるとlibは
・シングルスレッドDebug版
・シングルスレッドRelease版
・マルチスレッドDebug版
・マルチスレッドRelease版
をそれぞれ用意しておかなければならないのでしょうか?
一般的に用意されている"winmm.lib"などは、何も考えずにstdafx.hに
#pragma comment(lib, "winmm.lib")
と書いておけば、シングルスレッドだろうがマルチスレッドだろうが、DebugだろうがReleaseだろうが適切にリンクされました(警告やエラーでません)
自作のlibも同じくらい気軽に使えるようにするには、どのようにしたら良いのでしょうか?