C ++ Компиляция windows сервиса с помощью Visual Studio - PullRequest
0 голосов
/ 05 мая 2020

надеюсь, вы могли бы мне помочь. У меня есть исходный код на C ++ для моей службы на основе примера Microsoft , но я все равно получаю ошибку компоновщика при его компиляции:

error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

в качестве точки входа для windows служб - int _tmain(int argc, TCHAR* argv[])

В моем случае это void __cdecl _tmain(int argc, TCHAR* argv[]) { ... }

Есть 1 заголовок и 1 cpp файлы с классом, используемым службой и главным. cpp с точкой входа и службой в стиле c связанный код. Подсистема является консольной без какой-либо специальной точки входа. Тем не менее, если я добавляю classi c int main(...) в код, проект компилируется, но служба не запускается с windows диспетчер служб возвращает ошибку.

Пожалуйста, посоветуйте, как скомпилировать это, используя _tmain.

1 Ответ

1 голос
/ 06 мая 2020

Хорошо, с _tmain все равно не повезло. К сожалению, я не пытался определить точку входа WINAPI WinMain.

Тем не менее, если вы продолжите с точкой входа программы wmain и добавите код , упомянутый Ричардом Криттеном для запуска службы, SCManager выполняет просто хорошо. Для получения полного образца службы обратитесь к MS do c. wmain заставит вас использовать Unicode, но это не должно быть такой проблемой в 2020 году.

Подсистема должна быть установлена в соответствии с вашими потребностями и нет необходимости устанавливать пользовательскую точку входа.

Спасибо всем прокомментированным.

UPD Вы должны включить tchar.h, чтобы использовать _tmain, поэтому все типы точек входа будут работать нормально.

...