У меня есть приложение, написанное на C ++, которое использует сокет (Winsock2.h). Он был разработан для Windows 10, и он прекрасно работает и работает в Windows 10. Существует старая машина XP, на которой должно работать это приложение (машина не может быть обновлена, так как содержит устаревший код, который не работает в более новых системах), но когда я пытаюсь запустить приложение на нем, я получаю сообщение об ошибке: «Не удалось найти точку входа в процедуру WSAPoll в библиотеке динамических ссылок WS2_32.dll».
Я попробовал следующее:
- Я скачал Visual Studio Express 2010 на компьютере с XP и попытался построить приложение на нем:
- Код не компилируется, потому что он использует библиотеку libpqxx (я подозреваю, что libpqxx использует некоторый код c ++ 11, который не полностью поддерживается VS2010);
Я загрузил набор инструментов XP (v141_xp) для Visual Studio 2017 и построил приложение для Windows 10 (я также скачал и установил в XP распространяемый Microsoft Visual C ++ для Visual Studio 2017);
- Я получил ту же ошибку «Не удалось найти точку входа процедуры WSAPoll в библиотеке динамических ссылок WS2_32.dll».
Я попытался использовать winsock.h и связать приложение с wsock32.lib:
- Я получил ту же ошибку точки входа на WS2_32.lib (вероятно, VS связывает приложение с WS2_32.lib, даже если я указал использовать wsock32.liB).
Есть ли способ построить на VS2017 с помощью набора инструментов xp приложение, которое использует Ws2_32.lib для XP?
РЕДАКТИРОВАТЬ 2019-05-03 10: 30
Как заметил cprogrammer и Реми Лебо, WSAPoll не существует в XP. Дело в том, что я не использую WSAPoll в своем коде. Поэтому я последовал предложению «Отставной ниндзя» и написал с нуля приложение, использующее WinSock2, начиная с самых простых и добавляя функции шаг за шагом (*). Ну, весь мой код работал хорошо. Дело в том, что я включил еще одну библиотеку - libpqxx - и, вероятно, она использует WSAPoll.
Хорошо, у меня все еще есть проблема, но, по крайней мере, я знаю, где она
(*) Кстати, я уже пробовал то же самое в той части кода, в которой используется WS2_32.lib, но, поскольку проблема была в другой библиотеке, я все еще получил ошибку, поэтому предложение начать с нуля действительно помогло .