Dll / Lib の どちらでビルド中かを判別する方法はある?

[戻る]
しん 2005/04/05(火) 11:29:31
VC++で条件コンパイル時、Dll/Lib のどちらでビルド中かを判別する方法はあるでしょう
か?
例えばMS-C(++)でビルド中なら、#ifdef _MSC_VER で条件コンパイルできます。
同様に Dll/Lib を判別する方法はあるかのかな、と疑問に思い、質問致しました。

どうぞ宜しくお願い致します。

Ban 2005/04/05(火) 12:17:50
_DLL のことですか。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/
ja/vclib/html/_crt_c_run.2d.time_libraries.asp

それとも _USRDLL (DLL を作るとデフォルトでプロジェクトに定義される)の方でしょうか。


# _MSC_VER は VC でも使えますが。

しん 2005/04/05(火) 14:11:10
[[解決]]
回答、どうもありがとうございます。

>_DLL のことですか。
VC++7.1Pro.で実験しましたが、残念乍 失敗に終わりました。
新規プロジェクトをWin32プロジェクトとして作り、アプリケーションの設定で、
・アプリケーションの種類をDLLに設定
・追加のオプションでシンボルのエクスポートにチェックを入れる
を行いました。で、DLLMain()のあるcppファイルに下記コードを挿入しました。
#ifdef _DLL
#error this is dll version.
#endif
が、ビルドが完了してしまいます。

_DLLでは駄目でしたが、代わりに_WINDLLという奴をみつけました。これでうまくいきま
した。教えて頂いたサイトを元に、いろいろ調べた結果です。大感謝!

>_MSC_VER は VC でも使えますが。
そうですね。ただ、VC++はビルド時にMS-C++(cl.exe他)を呼んでいる為、MS-C++と申しま
した。いずれにせよ、本題には無関係ですね。

Ban 2005/04/05(火) 14:38:02
>>_DLL のことですか。
> VC++7.1Pro.で実験しましたが、残念乍 失敗に終わりました。

_DLL は主に「使っているMSのライブラリが DLL 版か否か」を示すものですから、
> ・アプリケーションの種類をDLLに設定
では変わらないのは当然かと。

> Dll/Lib のどちらでビルド中かを判別する方法はあるでしょうか?
この質問の意図が図りかねましたので。

お望みは、どちらかというとこちらだったのですね。

http://www.microsoft.com/japan/developer/library/vccore/
_core_build_settings_for_an_mfc_dll.htm

しん 2005/04/05(火) 14:58:50
>_DLL は主に「使っているMSのライブラリが DLL 版か否か」を示すもの
初めて知りました。情報、有難うございます。

>どちらかというとこちらだったのですね
仰る通りです。言葉足らずでしたね。失礼致しました。早速プリントアウト致します。

お世話さまでした。

古いスレッドには追加発言できません。