我已经有一段时间了。我希望有人可以告诉我我做错了什么。
这是我到目前为止采取的步骤:
- 下载最新版本的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”配置构建。有人可以告诉我哪里出错了吗?
答案 0 :(得分:1)
为Windows构建CURL的最佳方法是使用提供的Makefile的NMake。 你可以
修改CURL根文件夹中的Makefile以设置您使用的VC版本,然后运行nmake vc-all
(或选择适合您的任何其他VC目标)。检查./docs/INSTALL文件的“Win32”部分。
使用./winbuild文件夹中的Makefile.vc。检查./winbuild/BUILD.WINDOWS.txt如何使用它。
答案 1 :(得分:0)
这些错误意味着libcurl使用的函数不在链接器配置中指定的任何导入库中。
听起来至少应该是套接字import lib(ws2_32.lib)。
请注意,如果将libcurl编译为DLL,则所有导入库都被指定为DLL链接的一部分,因此您的应用程序不需要导入所有这些库,只需要链接到curl import lib 。您选择将curl编译为静态库的事实使得curl代码成为应用程序的一部分,因此必须在应用程序的链接器配置中提供所有支持库。