我创建了一个项目,并且像往常一样创建了 2 个平台(64 位和 32 位)(这是一个 DLL)。我编写了代码并对其进行了测试,一切都很顺利(我总是在 64 位配置上进行测试),但是当我想在我的 32 位 XP VM 上进行测试时,我遇到了一个 LINK 问题。
我在我的代码中使用 API WSASelectEvent(与许多其他 WSA/Winsock api 一样),但在 32 位配置中并且仅在 32 位配置中,链接器拒绝找到 _WSASelectEvent。
我得到了众所周知的 LNK2001 错误:
“错误 LNK2001:无法解析的外部符号 _WSAEventSelect”
我确定链接到 ws2_32.lib 并且我确定包含 winsock2.h,因为我使用其他 api(例如 WSAStartup 和 WSACleanup 以及我的代码中的结构和诸如此类的东西,显然是使用 winsockets)。
所以知道我喜欢在工作中搞乱配置(这是一个相当小的项目,没什么太大的)我决定一定要去,并在 Visual Studio 中创建了一个新项目,将代码放入并创建一个新平台来编译(当然是使用 GUI),但我得到了相同的结果。
我已经在网上冲浪了 2-3 个小时没有修复,我什至尝试比较编译命令行和链接命令行,它们除了正常的 /MACHINE:x64/x86 和目标文件夹之外是完全相同的。
您可能知道这个问题或解决方案吗?
注意::intellisense 警告我这一点,Visual Studio 不会在编写 WSASelectEvent( 时建议参数列表,但“转到定义”肯定会将我带到 Winsock2.h。