为什么我的C程序会出现ws2_32.dll的链接错误?

6

我正在使用Visual Studio 2010编写程序。 我无法将名为ws2_32.dll的文件与我的项目链接起来。

有人能告诉我如何做吗?


2
你尝试了什么?你在项目中改变了哪些地方?获得了什么实际结果?如果出现错误消息,它们是什么? - Damien_The_Unbeliever
3个回答

7
通常情况下,您不会直接链接到ws2_32.dll,而是链接到Windows SDK中可以找到的WS2_32.Lib。因此,在您的代码中,您需要编写:
#include <winsock2.h>

在您的链接器设置中添加WS2_32.Lib,然后您就可以开始了。

Windows SDK在这里:

http://msdn.microsoft.com/zh-cn/windows/bb980924.aspx


如果您已经正确安装了Visual Studio 2010,那么您就不需要下载SDK。 - Cody Gray
或许这取决于版本;我不知道在2010年是否仍然如此,但在2008 Express中它并没有包括在内。谢谢评论,希望它能让原始发布者首先查看VS2010默认的lib文件夹。 - Bernd Elkemann
哦,是的,我对Express版本不太确定。我从未使用过它。2008和2010的完整版本都包括Windows SDK,无需额外下载。包括链接仍然有帮助,但我会把它留作最后的选择。 - Cody Gray
1
@eznme - 为什么?这个答案并不是最好的答案。你甚至没有意识到Visual Studio Express的限制。Cody Gray的回答更好。 - Security Hound

6

首先要做的是导入定义了ws2_32.dll导出函数的头文件。您可以通过在希望调用这些函数的任何源文件顶部添加以下语句来实现:

#include <winsock2.h>

接下来,您需要告诉链接器可以在哪里找到该DLL的导入库。在Visual Studio中有两种方法可以做到这一点,但最简单的方法是将以下行添加到您的源代码中:

#pragma comment(lib, "ws2_32.lib")

你还可以将其添加为链接器的“附加依赖项”属性(在项目属性->配置属性->链接器->输入下找到)。
MSDN还有一个入门指南,介绍了创建基本Winsock应用程序的步骤。确保在继续之前已经阅读完它。

0

如果您没有lib文件,您需要使用LoadLibrary来加载文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接