将WinMain参数传递给另一个函数

时间:2011-11-15 00:02:33

标签: c++ visual-c++ cross-platform platform-independent

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

时,似乎会发生这种情况。

所以我的问题;我很好奇为什么会这样,你建议我做什么而不是这种方法?

1 个答案:

答案 0 :(得分:2)

您希望使用/SUBSYSTEM:WINDOWS链接器选项,以便使用WinMain