Libcurl 简明使用指南

本文介绍了一个免费开源的客户端URL传输库Libcurl,支持多种协议包括HTTP、HTTPS等,并且跨平台支持Windows、Unix、Linux等操作系统。文章详细描述了如何下载、编译Libcurl,并提供了一个简单的使用示例。
 

Libcurl 简明使用指南

Libcurl为一个免费开源的,客户端url传输库,支持FTPFTPSTFTPHTTPHTTPSGOPHERTELNETDICTFILELDAP,跨平台,支持WindowsUnixLinux等,线程安全,支持Ipv6。并且易于使用。

http://curl.haxx.se/libcurl/

 

http://curl.haxx.se/libcurl/ 下载一个稳定的版本,注意选择OS

 

编译libcurl

下载下来的是源码包,需要编译。

解压zip文件,进入curl-7.14.0/lib目录(我下载的是7.14.0)。

编译Debug版本。新建一个批处理bat文件,如buildDebug.bat,内容如下:

call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"

set CFG=debug-dll-ssl-dll-zlib-dll

set OPENSSL_PATH=E:/SSL/openssl-0.9.7e

set ZLIB_PATH=E:/zip/zlib123

nmake -f Makefile.vc6

 

其输出:libcurld_imp.lib, libcurld.dll

 

编译Release版本。新建一个批处理文件BuildRelease.bat,内容如下:

call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"

set CFG=release-dll-ssl-dll-zlib-dll

set OPENSSL_PATH=E:/SSL/openssl-0.9.7e

set ZLIB_PATH=E:/zip/zlib123

nmake -f Makefile.vc6

 

其输出:libcurl_imp.lib, libcurl.dll

 

上面编译的是libcurl dll,使用OpenSSL Dll版本和Zlib Dll版本。如果没有,可以从www.openssl.org 或者http://www.zlib.net/ 下载。

如果需要编译其他版本,可查看Makefile.vc6,设定相应的CFG 参数即可。

 

商业软件使用libcurl时,只需要包含其copywrite声明即可。

 

Sample

 

#include  < stdio.h >
#include 
" ../curl-7.14.0/include/curl/curl.h "
#pragma comment(lib, 
" ../curl-7.14.0/lib/libcurl_imp.lib " )

int  main( void )
{
  curl 
= curl_easy_init();
  
if(curl) {

    CURLcode res;    
    res 
= curl_easy_setopt(curl, CURLOPT_PROXY, "Test-pxy08:8080");
    res 
= curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    res 
= curl_easy_setopt(curl, CURLOPT_URL, "http://www.vckbase.com");
    res 
= curl_easy_perform(curl);

    
if(CURLE_OK == res) {
      
char *ct;
      
/* ask for the content-type */
      
/* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
      res 
= curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);

      
if((CURLE_OK == res) && ct)
        printf(
"We received Content-Type: %s ", ct);
    }


    
/* always cleanup */
    curl_easy_cleanup(curl);
  }

  
return 0;
}
总结以下内容 添加 iOS 依赖项 编辑页面最后修改时间: 2025 年 6 月 25 日 Apple SDK 依赖项(例如 Foundation 或 Core Bluetooth)作为一组预构建库在 Kotlin Multiplatform 项目中提供。它们不需要任何额外的配置。 您还可以在 iOS 源集中重用 iOS 生态系统中的其他库和框架。如果使用@objc属性将 Objective-C 依赖项和 Swift 依赖项的 API 导出到 Objective-C,则 Kotlin 支持与 Objective-C 依赖项和 Swift 依赖项的互操作性。纯 Swift 依赖项尚不受支持。 要处理 Kotlin Multiplatform 项目中的 iOS 依赖项,您可以使用cinterop 工具管理它们,或者使用CocoaPods 依赖项管理器(不支持纯 Swift pod)。 使用 cinterop 您可以使用 cinterop 工具为 Objective-C 或 Swift 声明创建 Kotlin 绑定。这样您就可以从 Kotlin 代码中调用它们。 对于库和框架来说,步骤略有不同,但一般工作流程如下: 下载您的依赖项。 构建它以获取其二进制文件。 创建一个特殊的.def 定义文件来描述对 cinterop 的依赖关系。 调整您的构建脚本以在构建期间生成绑定。 添加库 下载库源代码并将其放置在您可以从项目中引用的地方。 构建一个库(库作者通常会提供有关如何执行此操作的指南)并获取二进制文件的路径。 在您的项目中,创建一个.def文件,例如DateTools.def。 将第一个字符串添加到此文件:language = Objective-C。如果要使用纯 C 依赖项,请省略语言属性。 为两个必需属性提供值: headers描述 cinterop 将处理哪些标头。 package设置应放入这些声明的包的名称。 例如: headers = DateTools.h package = DateTools 将有关与该库互操作性的信息添加到构建脚本中: 传递文件的路径。如果您的文件与 cinterop 同名且位于目录中,.def则可以省略此路径。.defsrc/nativeInterop/cinterop/ 使用该选项告诉 cinterop 在哪里查找头文件includeDirs。 配置到库二进制文件的链接。 科特林 Groovy kotlin { iosArm64() { compilations.getByName("main") { val DateTools by cinterops.creating { // Path to the .def file definitionFile.set(project.file("src/nativeInterop/cinterop/DateTools.def")) // Directories for header search (an analogue of the -I<path> compiler option) includeDirs("include/this/directory", "path/to/another/directory") } val anotherInterop by cinterops.creating { /* ... */ } } binaries.all { // Linker options required to link to the library. linkerOpts("-L/path/to/library/binaries", "-lbinaryname") } } } 构建项目。 现在,您可以在 Kotlin 代码中使用此依赖项。为此,请导入您在文件package属性中设置的包.def。对于上面的示例,这将是: import DateTools.* 请参阅使用 cinterop 工具和 libcurl 库的示例项目。 添加框架 下载框架源代码并将其放置在您可以从项目中引用的位置。 构建框架(框架作者通常会提供有关如何执行此操作的指南)并获取二进制文件的路径。 在您的项目中,创建一个.def文件,例如MyFramework.def。 将第一个字符串添加到此文件:language = Objective-C。如果要使用纯 C 依赖项,请省略语言属性。 为这两个必需属性提供值: modules– cinterop 应处理的框架的名称。 package– 这些声明应该放入的包的名称。 例如: modules = MyFramework package = MyFramework 将有关与框架互操作性的信息添加到构建脚本: 传递 .def 文件的路径。如果您的.def文件与 cinterop 同名且位于src/nativeInterop/cinterop/目录中,则可以省略此路径。 使用选项将框架名称传递给编译器和链接器-framework。使用选项将框架源文件和二进制文件的路径传递给编译器和链接器-F。 科特林 Groovy kotlin { iosArm64() { compilations.getByName("main") { val DateTools by cinterops.creating { // Path to the .def file definitionFile.set(project.file("src/nativeInterop/cinterop/DateTools.def")) compilerOpts("-framework", "MyFramework", "-F/path/to/framework/") } val anotherInterop by cinterops.creating { /* ... */ } } binaries.all { // Tell the linker where the framework is located. linkerOpts("-framework", "MyFramework", "-F/path/to/framework/") } } } 构建项目。 现在,您可以在 Kotlin 代码中使用此依赖项。为此,请导入您在.def文件中的 package 属性中设置的包。对于上面的示例,导入方式如下: import MyFramework.* 了解有关Swift/Objective-C 互操作以及如何从 Gradle 配置 cinterop 的更多信息。 使用 CocoaPods 执行初始 CocoaPods 集成设置。 通过在项目中包含pod()函数调用,从您想要使用的 CocoaPods 存储库中添加对 Pod 库的依赖项。build.gradle(.kts) 科特林 Groovy kotlin { cocoapods { version = "2.0" //.. pod("SDWebImage") { version = "5.20.0" } } } 您可以在 Pod 库上添加以下依赖项: 来自 CocoaPods 存储库 在本地存储的库中 来自自定义 Git 存储库 来自自定义 Podspec 存储库 使用自定义 cinterop 选项 在 IntelliJ IDEA 中运行Build | Reload All Gradle Projects (或在 Android Studio 中运行 File | Sync Project with Gradle Files)以重新导入项目。 要在 Kotlin 代码中使用依赖项,请导入包cocoapods.<library-name>。对于上面的示例,它是: import cocoapods.SDWebImage.* 请参阅在 Kotlin 项目中设置了不同 Pod 依赖项的示例项目。 查看示例项目,其中具有多个目标的 Xcode 项目依赖于 Kotlin 库。
最新发布
10-30
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值