0

我创建了一个项目,并且像往常一样创建了 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。

4

1 回答 1

0

解决了,

好的,显然我在包含我自己的库时搞砸了。在其他几个地方包含 winsock2.h 之后,我也设法在 32 位上编译它。

谢谢你的时间!

于 2013-09-17T11:34:10.680 回答