我有一个名为AquaMain.cpp的文件

#include "AquaGame.h"

using namespace Aqua;

#ifdef _WIN32

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
     AquaGame::get()->init();

     return AquaGame::get()->run();
}

#endif


该文件在静态库中。

当我尝试编译使用此静态库的项目时,构建失败并显示此错误


  1> MSVCRTD.lib(crtexew.obj):错误LNK2019:函数__tmainCRTStartup中引用的未解析的外部符号WinMain @ 16


AquaMain.cpp文件没有被编译,我不知道为什么。

如果我将WinMain函数移至可执行项目,则该函数将被编译且一切正常,但我希望WinMain位于静态库中。

有任何想法吗?

最佳答案

您需要将WinMain声明为extern "C"

extern "C" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
     AquaGame::get()->init();

     return AquaGame::get()->run();
}

关于c++ - 包含WinMain的Cpp文件未编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14609339/

10-13 03:25