Visual Studio: макрос для проверки типа конфигурации (exe / dll) - PullRequest
8 голосов
/ 08 октября 2011

Есть ли макрос, который я могу использовать для проверки текущего типа конфигурации в visual studio?В зависимости от текущей настройки я бы хотел включить функцию main или dllmain:

#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

Ответы [ 2 ]

11 голосов
/ 11 марта 2016

Если это dll, то _WINDLL будет определено как унаследованное значение. Вы можете найти его здесь: Свойства конфигурации -> C / C ++ -> Препроцессор -> Определения препроцессора.

#ifdef _WINDLL
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{ ... }
#else
int main(int argc, char** argv)
{ ... }
#endif
8 голосов
/ 08 октября 2011

Если это проект DLL, будет определен _USRDLL. (см. Свойства конфигурации \ Препроцессор \ Определения препроцессора).

Будьте осторожны, поскольку список заполняется мастером и не будет обновляться автоматически, если проект был создан как-то еще, а затем настроен как DLL. Кроме того, вы должны быть осторожны, если вы создаете библиотеку для связи с DLL.

...