Я создал проект и, как всегда, создал 2 платформы (64-битную и 32-битную) (это DLL). Я написал код и протестировал его, и все прошло отлично (я всегда тестирую на 64-битной конфигурации), но, поскольку я хотел протестировать свою 32-битную виртуальную машину XP, я столкнулся с проблемой LINK.
Я использую API WSASelectEvent в своем коде (как и многие другие API WSA/Winsock), но в 32-битной конфигурации и только в 32-битной конфигурации компоновщик отказывается находить _WSASelectEvent.
Я получаю известную ошибку LNK2001:
"ошибка LNK2001: неразрешенный внешний символ _WSAEventSelect"
Я обязательно ссылаюсь на ws2_32.lib и обязательно включаю winsock2.h, так как я использую другие API (такие как WSAStartup и WSACleanup, а также структуры и многое другое в моем коде, очевидно, для использования winsockets).
поэтому, зная, что мне нравится возиться с конфигурацией в середине работы (это довольно небольшой проект, ничего особенного), я решил, что лучше пойти наверняка, и создал новый проект в Visual Studio, поместил код и создал новую платформу для компиляции ( с графическим интерфейсом, конечно), но у меня те же результаты.
Я в течение 2-3 часов занимался серфингом в сети без каких-либо исправлений, и я даже пытался сравнить командную строку компиляции и командную строку ссылки, которые, кроме обычных папок /MACHINE:x64/x86 и целевых папок, абсолютно одинаковы.
может быть вы знаете эту проблему или ее решение?
ПРИМЕЧАНИЕ: intellisense предупредит меня об этом, и Visual Studio не предложит список параметров, когда WSASelectEvent( написано, но «Перейти к определению» обязательно приведет меня к Winsock2.h.
winsock vs winsock2
. - person Dayal rai   schedule 17.09.2013