Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Подружить пример Рихтера программ-я служб иWINSOCK |
Автор: Kornev 15.7.2012, 17:45 | ||||||||||
Добрый день, форумчане! Помогите подружить пример программирования служб от Рихтера и winsock2.h Проблема, на сколько я понимаю, в том, что Рихтер делал свои примеры под Windows 2000 Я не знаю когда была сделана библиотека ws2_32.lib, но что то мне подсказывает что раньше... Проблемы начинаются сразу же после появления в коде строчки #include <winsock2.h> Компилятор жалуется, что:
Заглянул в cmnhdr.h Тут прописано:
Поменял на:
Теперь компилятор жалуется на 2-е ошибки: --------------------Configuration: 03 TimeService - Win32 Debug-------------------- Compiling... TimeService.cpp c:\cd\cmnhdr.h(201) : error C2065: 'MB_SERVICE_NOTIFICATION' : undeclared identifier c:\cd\03-timeservice\timeservice.cpp(272) : error C2664: 'CommandLineToArgvW' : cannot convert parameter 1 from 'char *' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. 03 TimeService.exe - 2 error(s), 0 warning(s) Первая MB_SERVICE_NOTIFICATION в функции:
Вторая в
Подскажите пожалуйста как правильно разрешить эти ошибки. Еще, я так пологаю, что после изменеия WINVER на 0x0501 моя служба перестанет работать в Windows 2000. Это так? |
Автор: Kornev 15.7.2012, 19:24 |
От первой ошибки избавился заменой флага на MB_DEFAULT_DESKTOP_ONLY Поправьте меня если так делать нельзя или не правильно. |
Автор: Kornev 15.7.2012, 19:55 |
Вторая ошибка устранилась после замены функции GetCommandLine() на функцию GetCommandLineW() Однако этим проблемы не закончились... Компилирую службу без #include <winsock2.h> Все отлично работает. Служба стартует, останавливается, и т.д. Только добавляю строчку #include <winsock2.h>, все... Служба не стартует. Ошибка 1053: Служба не ответила на запрос своевременно. Хоть у кого нибудь есть мысли по этому поводу? Я даже не знаю что и выкладывать из исходников... Изначально примеры программирования служб от Рихтера используют именнованые каналы для сетевого взаимодействия. Я эти функции не вырезал. Может они как то конфликтуют с сокетами? |
Автор: feodorv 15.7.2012, 19:59 | ||||||
У Вас явно с инклюдами что-то не в порядке. Ну не может быть такого:
При том, что
|
Автор: Kornev 15.7.2012, 20:07 | ||||||||
Спасибо огромное за подсказку заменить #include <Windows.h> на #include <winsock2.h> После таких действий служба опять начала нормально стартовать, останавливаться. Не сочтите за извращение. Но на всякий случай отмечу, что все эти примеры компилирую на VC6 установленной под Win 7 с установленым пакетом SDK February 2003 Edition ver 5.2.3790.0 2003-02 Last version with VC6 support |
Автор: feodorv 15.7.2012, 20:19 |
Не сочту))) |