【问题标题】:Visual Studio cant link on 32 bit but can on 64bitVisual Studio 不能在 32 位上链接,但可以在 64 位上
【发布时间】:2013-09-21 18:34:39
【问题描述】:

我创建了一个项目,并且像往常一样创建了 2 个平台(64 位和 32 位)(这是一个 DLL)。 我编写了代码并对其进行了测试,一切都很顺利(我总是在 64 位配置上进行测试),但由于我想在我的 32 位 XP 虚拟机上进行测试,我遇到了 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。

【问题讨论】:

  • 也许这是头文件包含的问题。 winsock vs winsock2.
  • 我已经检查过了,绝望中我尝试包括这两个的每一个排列......

标签: c visual-studio-2010 compilation linker 32bit-64bit


【解决方案1】:

已解决,

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

感谢您的宝贵时间!

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多