LibCurl – 释放静态Lib链接问题

我已经有一段时间了。 我希望有人可以告诉我我做错了什么。

这是我到目前为止采取的步骤:

– 下载最新版本的cURL(7.21.7)。

– 使用vc6curl.dsw在Visual Studio 2010中打开解决方案,并将项目转换为VS2010。

– 将libcurl项目配置设置为“release”并构建。 构建成功。创建名为“LIB-Release”的文件夹。 它包含几个obj文件,“libcurl.lib”文件也驻留在这里。

测试应用:

– 在项目的设置中,我将编译器指向curl include(headers)。

C / C ++ >>一般>>附加包含目录

– 为预处理器定义添加了“CURL_STATICLIB”

C / C ++ >>预处理器定义

– 在我的链接器附加库依赖项中添加了“libcurl.lib”文件夹的路径

链接>>一般>>附加图书馆目录

– 为我的链接器添加了“libcurl.lib”附加依赖项

链接>>输入>>附加依赖项

– 将我的项目配置设置为“Realease”并点击构建!

我得到42个未解决的外部错误:

错误65错误LNK1120:42未解析的外部C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ Release \ curl_static_lib.exe curl_static_lib错误61错误LNK2001:未解析的外部符号___ WSAFDIsSet @ 8 C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib(select.obj)curl_static_lib错误59错误LNK2001:未解析的外部符号_ imp _accept @ 12 C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib(ftp.obj)curl_static_lib错误46错误LNK2001:未解析的外部符号_ imp _ber_free C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib(ldap.obj)curl_static_lib错误26错误LNK2001:未解析的外部符号_ imp _bind @ 12 C:\ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib(connect.obj)curl_static_lib

我也试过使用“Debug”配置进行构建。 有人可以告诉我哪里出错了吗?

为Windows构建CURL的最佳方法是使用提供的Makefile的NMake。 您可以

  1. 修改CURL根文件夹中的Makefile以设置您使用的VC版本,然后运行nmake vc-all (或选择适合您的任何其他VC目标)。 检查./docs/INSTALL文件的“Win32”部分。

  2. 使用./winbuild文件夹中的Makefile.vc。 检查./winbuild/BUILD.WINDOWS.txt如何使用它。

这些错误意味着libcurl使用的函数不在链接器配置中指定的任何导入库中。

听起来至少应该是套接字import lib(ws2_32.lib)。

请注意,如果将libcurl编译为DLL,则所有导入库都被指定为DLL链接的一部分,因此您的应用程序不需要导入所有这些库,只需要链接curl import lib。 您选择将curl编译为静态库的事实使得curl代码成为应用程序的一部分,因此必须在应用程序的链接器配置中提供所有支持库。