我正在 Windows 上开发应用程序,但我也想支持其他平台(我编写的大部分代码都是平台独立的)。无论如何,我认为为了发展,我想让事情保持简单(也许我在这种方法上很天真)所以我main.cpp
看起来有点像下面这样:
#ifdef _WIN32
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR cmdLine,
int cmdShow)
#else
int main(int argc, char* argv[])
#endif
{
/* If the application is launched under Windows */
#ifdef _WIN32
win_init wi;
return wi.init(hInstance, hPrevInstance, cmdLine, cmdShow);
#endif
/* If the application is launched under OS X */
#ifdef __APPLE__
osx_init oi;
return oi.init();
#endif
}
所以想法是,如果应用程序在 Windows 下启动,WinMain
则调用它,然后我使用提供的 WinMain 参数调用 wi.init 来完成其余的工作。
我以为我很聪明,但是当我编译时出现错误:
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
我已经研究过这个错误,它似乎发生在人们忘记主要方法或尝试将 DLL 编译为 .exe 时
所以对于我的问题;我很好奇为什么会发生这种情况,你建议我做什么而不是这种方法?