Visual Studio:用于检查配置类型(exe/dll)的宏

Ped*_*dro 9 c++ macros visual-studio

我可以用一个宏来检查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
Run Code Online (Sandbox Code Playgroud)

qik*_*qik 12

如果它是dll,那么_WINDLL将被定义为继承值.您可以在此处找到它:配置属性 - > C/C++ - >预处理器 - >预处理器定义.

#ifdef _WINDLL
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{ ... }
#else
int main(int argc, char** argv)
{ ... }
#endif
Run Code Online (Sandbox Code Playgroud)

  • 这比“_USRDLL”更可靠,正如前面提到的,它是由自动包含的属性表继承的。 (2认同)

rus*_*lik 8

如果它是一个DLL项目,_USRDLL将定义.(请参阅配置属性\预处理器\预处理器定义).

但请注意,因为列表由向导填充,如果项目是作为其他项目创建的,则不会自动更新,然后将其配置为DLL.此外,如果要构建要与DLL链接的lib,则必须小心.