我有一个名为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位于静态库中。
有什么想法吗?
答案 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 ++编译器修复了错误。