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

Passing WinMain parameters to another function

本文关键字:另一个 函数 参数传递 WinMain      更新时间:2023-10-16

我正在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被调用,然后我调用wi。使用提供的WinMain参数init来完成其余的工作。

我认为我是聪明的,但当我编译我得到一个错误:

MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

我已经研究了这个错误,当人们忘记一个主要方法或试图将DLL编译为。exe时,似乎会发生这种情况

对于我的问题;我很好奇为什么会发生这种情况,你建议我用什么方法来代替这种方法?

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