包含WinMain的Cpp文件未编译

时间:2013-01-30 16:52:29

标签: c++ visual-studio

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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