0

我正在 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 时

所以对于我的问题;我很好奇为什么会发生这种情况,你建议我做什么而不是这种方法?

4

1 回答 1

2

您想使用/SUBSYSTEM:WINDOWS链接器选项以便WinMain使用。

于 2011-11-15T00:05:20.897 回答