2011-10-08 7 views
4

Visual Studioの現在の構成タイプを確認するためのマクロはありますか?Visual Studio:構成タイプを確認するためのマクロ(exe/dll)

#IFDEF CONFIGURATION_TYPE_EXE 

    int main(int argc, char **argv) 
    { 
     ... 
    } 
#ELSEIF CONFIGURATION_TYPE_DLL 


    BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) 
    { 
     return TRUE; 
    } 

#ENDIF 
+0

ビジュアルスタジオで独自のビルド設定とプリプロセッサ定義を定義することができます。 – helloworld922

+0

'現在の設定タイプ'を定義できますか?リリース/デバッグビルドモードですか? – simbolo

+0

@simboloいいえ、現在の設定(デバッグ/リリース)を確認したい設定プロパティ - >一般の「設定タイプ」というオプションがあります。 – Pedro

答えて

6

それはDLLプロジェクトの場合は、_USRDLLが定義されます。 は、現在の設定に応じて、私はどちらかのメインまたはDllMainの機能が含まれるようにしたいと思います。 (「構成のプロパティー/プリプロセッサー/プリプロセッサーの定義」を参照)。

リストはウィザードで満たされ、プロジェクトが別のものとして作成され、DLLとして構成されていると自動的に更新されないため、注意してください。また、DLLをリンクするためにlibを構築する場合は注意が必要です。

+0

私は最初にアプリケーションとして作成したプロジェクトでifdef _USRDLLを試しました。構成タイプdllに切り替えると、まだ定義されていません。だから私は他のプロジェクト設定も変えなければならないと思います。 – Pedro

+1

私はこのシナリオについて明白に言いました.. – ruslik

7

dllの場合、_WINDLLは継承された値として定義されます。ここでそれを見つけることができます:構成プロパティ - > C/C++ - >プリプロセッサ - >プリプロセッサ定義。

#ifdef _WINDLL 
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) 
{ ... } 
#else 
int main(int argc, char** argv) 
{ ... } 
#endif 
+0

これは、前述のように '_USRDLL'よりも信頼性が高く、自動的に含まれるプロパティシートによって継承されています。 –

関連する問題