vc2008构建和使用libcurl静态库

本文介绍了如何在VC2008环境下构建和测试libcurl静态库。首先下载CURL源代码,用VC2008打开libcurl.vcproj项目并构建成功。接着创建一个测试工程,将头文件目录和静态库添加到配置中。在遇到链接错误后,通过在预处理器设置中添加特定宏,并在测试工程中链接Ws2_32.lib和Wldap32.lib,最终解决了问题。
摘要由CSDN通过智能技术生成


1>下载CURL源代码curl-7.26.0.zip

 2>用VC2008/2005打开工程curl-7.26.0\lib\libcurl.vcproj,转换下工程并构建,可以直接编译成功!

3>新建个控制台工程测试下刚才编译的静态库libcurl.lib,可以在libcurl\curl-7.26.0\docs\examples目录找个简单的使用curl的例子,在这个工程选项Configuration Properties-| C/C++ -|General -|Additional Include Directories 路径中加入curl7.26\include, 在linker选项卡,指定静态库路径和静态库的名字libcurl.lib,代码如下

 

#include "stdafx.h"
#include <Windows.h>
#include "curl/curl.h"

int _tmain(int argc, _TCHAR* argv[])
{
	CURL *curl;
	CURLcode res;

	curl = curl_easy_init();
	if(curl) {
		curl_easy_setopt(curl, CURLOPT_URL, "http://2345.com/?kduba");
		res = curl_easy_perform(curl);
		curl_easy_cleanup(curl);
	}
	return 0;
}


 此时cpp文件可以编译,但是链接报错

1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_init
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_setopt
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_perform
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_cleanup

 

看样子根本没有链接静态库,虽然刚才指定了库的路径,确认库路径的名字没错,于是看了下curl_easy_init 这个函数的定义,

 

CURL_EXTERN CURL *curl_easy_init(void);
CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
CURL_EXTERN void curl_easy_cleanup(CURL *curl);


/*
 * Decorate exportable functions for Win32 and Symbian OS DLL linking.
 * This avoids using a .def file for building libcurl.dll.
 */
#if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \
     !defined(CURL_STATICLIB)
#if defined(BUILDING_LIBCURL)
#define CURL_EXTERN  __declspec(dllexport)
#else
#define CURL_EXTERN  __declspec(dllimport)
#endif
#else


 看到这里于是明白了,如下操作:

在libcurl静态库工程选项Configuration Properties-| C/C++ -| Preprocessor 中加上BUILDING_LIBCURL宏
在测试工程选项Configuration Properties-| C/C++ -| Preprocessor 中加上CURL_STATICLIB宏,然后依次重新构建两个工程

发现测试工程链接不过

1>libcurl_MT.lib(easy.obj) : error LNK2001: unresolved external symbol __imp__WSACleanup@0
1>libcurl_MT.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp__WSACleanup@0
1>libcurl_MT.lib(easy.obj) : error LNK2001: unresolved external symbol __imp__WSAStartup@8
1>libcurl_MT.lib(telnet.obj) : error LNK2001: unresolved external symbol __imp__WSAStartup@8
1>libcurl_MT.lib(tftp.obj) : error LNK2001: unresolved external symbol

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在VC2015应用中使用libcurl静态库可以通过以下步骤实现: 1. 首先,下载适用于VC2015的libcurl静态库,可以从官方网站上下载最新的版本。 2. 解压下载的文件并打开解压后的文件夹。 3. 在解压后的文件夹中,找到libs文件夹,里面包含了各种编译好的静态库文件。 4. 在VC2015中创建一个新的项目,例如一个控制台应用程序。 5. 在解决方案资源管理器中,右键点击项目名称,选择“属性”。 6. 在属性窗口中,选择“VC++目录”一栏,然后在“包含目录”一栏中添加libcurl头文件的路径。 7. 在同一个属性窗口中,选择“链接器”一栏,然后在“常规”一栏中添加libcurl库文件的路径。 8. 再在链接器中的“输入”一栏中添加所需的libcurl库文件的名称,通常包括libcurl.lib和libssl.lib。 9. 确保将项目的编译器设置为与libcurl静态库相匹配的版本(例如,如果下载的是64位静态库,则需要选择64位编译器)。 10. 点击“应用”和“确定”保存修改。 11. 在项目中的源代码文件中添加#include <curl/curl.h>来包含libcurl库的头文件。 12. 在需要使用libcurl的代码中,使用libcurl提供的函数和接口进行网络请求等操作。 以上是在VC2015应用中使用libcurl静态库的基本步骤。通过将libcurl库文件链接到项目中并包含相应的头文件,我们可以使用libcurl提供的功能和接口来实现各种网络相关的操作。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值