LibCurl - 释放静态Lib链接问题

时间:2011-09-10 04:42:48

标签: c++ c visual-c++ curl libcurl

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

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

- 下载最新版本的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”并点击build!

我得到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”配置构建。有人可以告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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