2011-09-10 47 views
1

我一直在这里一段时间了。我希望有人能告诉我我做错了什么。LibCurl - 释放静态库链接问题

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

-Downloaded最新版本的卷曲(7.21.7)。

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

- 将libcurl项目配置设置为“发布”并构建。构建成功。创建一个名为“LIB-Release”的文件夹。它包含多个obj文件,“libcurl.lib”文件也位于此处。

测试应用:

- 在项目的设置,我指着编译器卷曲包括(头)。

C/C++ >>通用>>附加包含目录

- 增加了 “CURL_STATICLIB” 的预处理器定义

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

- 增加了路径“ libcurl.lib

链接>>一般在我的链接器的其它库的依赖”文件夹>>附加库目录

- 新增“libcurl.lib”我的连接额外的依赖

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

- 设置我的项目配置“Realease”和击筑!

我得到42个无法解析的外部错误:

错误65错误LNK1120:42悬而未决 的外部C:\用户\尼克\文档\ Visual Studio的 2010 \项目\ curl_static_lib \发布\ curl_static_lib.exe curl_static_lib 错误61错误LNK2001:解析外部符号 ___ WSAFDIsSet @ 8 C:\用户\尼克\文件\的Visual Studio 2010 \项目\ curl_static_lib \ curl_static_lib \ libcurl.lib(select.obj)curl_static_lib 错误59错误LNK2001:解析外部符号 _ imp _accept @ 12 C:\用户\尼克\文件\的Visual Studio 2010 \项目\ curl_static_lib \ curl_static_lib \ libcurl.lib(ftp.obj)curl_static_lib 错误46错误LNK2001:解析外部符号 _ imp的 _ber_free C: \用户\尼克\文件\的Visual Studio 2010 \项目\ curl_static_lib \ curl_static_lib \ libcurl.lib(ldap.obj)curl_static_lib 错误26错误LNK2001:解析外部符号 _ 小鬼 _bind @ 12 C:\用户\尼克\ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib(connect.obj)curl_static_lib

我已经尝试使用“调试”配置以及建设。有人能告诉我我要去哪里吗?

+1

您可能尝试使用./winbuild文件夹中的Makefile.vc或./lib文件夹中的Makefile.vc8(9,10)使用NMAKE进行构建。从VS命令提示符处运行“nmake -f ”。 – istepura

+0

男人!我已经使用make文件多次尝试,但我没有发现有针对的makefile – Nick

+0

如果你想添加你的答案病检查它 – Nick

回答

1

为Windows创建CURL的最佳方式是将NMake与提供的Makefiles一起使用。 您可以

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

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

+0

这工作。该命令给nmake添加了可选参数vc = 10。这建立了一个静态的libcurl_a.lib – Nick

0

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

听起来像至少插座导入库(ws2_32.lib)应该在那里。

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

+0

如果这种LIB已经与libcurl的构建创造或者是你的10版本开关这表明我需要导入其他库? – Nick

+0

您需要从系统导入其他库,至少ws2_32.lib,或许其他库,这取决于缺少哪些符号。当我得到未定义的符号时,我通常会做的是在msdn中找到它们。文档通常说明一个符号属于哪个lib,因此它只是查找卷曲需求的所有依赖关系。 – Miguel