vs2010编译libcurl

需求

在一个封闭的生产环境中实现一个ftp客户端。win7/xp 32位,vs2010/vc6.0。

方案

通过多方搜索,目前有两种方案

1、用MFC里的CFTPConnection与CInternetSession类来实现。

方案1的好处是MFC现成的,不用下载第三方库。缺点是不跨平台,可移植性差。

2、用libcurl。

方案2的好处是移植性好,可以跨多个平台,功能健全,缺点是有一个学习过程,另外还需要再封装基础的操作函数。

一开始stackoverflow上没咋看到提CFTPConnection这个方案,清一色的多是libcurl、libssh之类的,以为MFC走不通,没现成的,所以开始了一轮libcurl的折腾。才有了这篇博文。CFTPConnection此处就不细讲如何使用。

OK,进入正题。

vs2010编译libcurl

1、下载libcurl源码

下载链接   https://curl.haxx.se/download.html

第一项即可。

2、找到工程

3、如何定制openssl、libssh2、winssl之类。

libcurl引用了一些第三方的东西,如winssl,libssh2,openssl,如果使用的话,需要单独下载相关的源码或者库。既然我是在一个封闭的环境,只用ftp就够了,完全不想再用ssh、ssl之类的劳什子。所以,引发了第三个问题。

也就是说,可选,不想要就不要。但是工程是默认要加这些依赖的。。。直接编译会报错。

fatal error C1083: 无法打开包括文件:“libssh2.h”: No such file or directory

上面这张图片有3个点,1是输出框的出错信息,2是定位到的文本行,3是具体宏定义的位置。

将项目属性中c/c++下预处理中相关宏定义清理下。不用的HAVE_LIBSSH2_H、HAVE_LIBSSH_LIBSSH_H,都删除。。。。因为你没有下载相关的文件,当然就没有。。。。当然,如果具体需要这两个劳什子。这里有两个链接,可以直达这两个资源的源头。具体官方的网站也可以看看。

libssh2:https://github.com/libssh2/libssh2

openssl:https://github.com/openssl/openssl

4、工程其他配置

工程配置---->链接器---->输入    只保留3项ws2_32.lib;wldap32.lib;和最后一个变量导入。

OK,前面都配置好了之后,还可能会报一个错误。

LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin目录下的cvtres.exe改名为cvtres_BAK.exe。避免冲突就行。当然别的解决方案可以将配置中的清单文件设置为否,不过我的两台机器上,一个用效,一个无效。但是改cvtres.exe名字肯定是有效的。

搞定。至于其他的配置,是动态库还是静态库,动态的省内存空间,加载时可能慢点,这个都不是问题。个人感觉推荐动态库的方式。具体设置也是在工程配置中的预处理栏目。

猜你喜欢

转载自blog.csdn.net/junbujianwpl/article/details/81173513