Създадох проект и както винаги правя, създадох 2 платформи (64 и 32 бита) (това е DLL). Написах кода и го тествах и всичко мина страхотно (винаги тествам на 64-битова конфигурация), но тъй като исках да тествам на моята 32-битова XP VM, имам проблем с LINK.
Използвам API WSASelectEvent в моя код (както много други API на WSA/Winsock), но в 32-битова конфигурация и само в 32-битова конфигурация линкерът отказва да намери _WSASelectEvent.
Получавам добре познатата грешка LNK2001:
"грешка LNK2001: неразрешен външен символ _WSAEventSelect"
Със сигурност се свързвам към ws2_32.lib и със сигурност включвам winsock2.h, тъй като използвам други API (като WSAStartup и WSACleanup и структури и какво ли още не в моя код, очевидно за използване на winsockets).
така че знаейки, че обичам да се забърквам с конфигурацията по време на работа (това е доста малък проект, нищо не е твърде голям), реших да се разболея със сигурност и създадох нов проект във визуално студио, поставете кода и създайте нова платформа за компилиране в ( с GUI, разбира се), но имам същите резултати.
В продължение на 2-3 часа сърфирах в мрежата, за да не се поправи и дори се опитах да сравня командния ред за компилиране и командния ред за връзка, който освен нормалните /MACHINE:x64/x86 и целевите папки е абсолютно същият.
може би знаете този проблем или решение за него?
ЗАБЕЛЕЖКА:: intellisense ме предупреждава за това и Visual Studio няма да предложи списък с параметри, когато е написано WSASelectEvent(, но „Отидете на дефиниция“ със сигурност ме отвежда до Winsock2.h.
winsock vs winsock2
. - person Dayal rai   schedule 17.09.2013