Передача параметров WinMain в другую функцию - PullRequest
0 голосов
/ 15 ноября 2011

Я занимаюсь разработкой приложения для 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.init с предоставленными аргументами WinMain, чтобы сделать все остальное.

Я думал, что я умный, но при компиляции я получаю ошибку:

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

Я исследовал эту ошибку, и она возникает, когда люди либо забывают основной метод, либо пытаются скомпилировать DLL как .exe

Так что на мой вопрос; Мне интересно, почему это происходит, и что вы рекомендуете делать вместо этого подхода?

1 Ответ

2 голосов
/ 15 ноября 2011

Вы хотите использовать параметр компоновщика /SUBSYSTEM:WINDOWS, чтобы использовать WinMain.

...