Основная функция в .lib как функция запуска? - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу сделать что-то вроде этого:

library.h

#define main ClientMain

libary.cpp

#define main ClientMain
extern "C" int main (int argc, char *argv[], char *envp[]);

#ifdef WINDOWS
int WINAPI WinMain()
{
  // other code here
  ClientMain(0, 0, 0);
}
#endif

client.cpp // независимый от платформы код

#include library.h
int main(int argc, char* argv[]){ // stuff}

Однако я получаю сообщение об ошибке: MSVCRTD.lib (crtexe.obj): ошибка LNK2019: неразрешенный внешний символ главная ссылка в функции _ _tmainCRTStartup

Есть идеи, что я делаю не так?

1 Ответ

3 голосов
/ 13 сентября 2011

Вы компилируете свою программу Windows как консольную программу. В этом случае ожидаемая точка входа действительно main, а не WinMain. Последний предназначен для программ с графическим интерфейсом. Ваша программа имеет функцию с именем WinMain и функцию с именем ClientMain, но без main.

Хорошо, если вы хотите, чтобы ваша библиотека предоставляла функцию main, но вы должны убедиться, что она действительно называется main, потому что именно это будет искать компоновщик.

...