0

我有一个名为 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 位于静态库中。

有任何想法吗?

4

2 回答 2

1

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

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

     return AquaGame::get()->run();
}
于 2013-01-30T17:10:17.983 回答
0

尽管 AquaMain.cpp 具有扩展名 .cpp,但 Visual Studio 2012 已将其用作标头,因为 AquaMain.cpp 属性页将“项目类型”字段设置为 C/C++ 标头。

将字段更改为 C/C++ 编译器修复了错误。

于 2013-01-30T17:23:38.843 回答