本文目标是:在使用Windows 10 + Visual Studio 2015Update 3+ Qt 5.7.0基础上,编译OpenSSL和libCurl,编译了AliPay C++ SDK,可以实现支付。本文分四章叙述。
所有软件都是当前最新版,安全性能最高。
第一章 下载支付宝服务端SDK
下载地址:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wtCuGV&treeId=193&articleId=103419&docType=1
或者:
https://github.com/ArthasModern/AlipayOpenapiCpp
将源文件解压到E:\Qt\AlipayOpenapiCpp,您可以自由选择目标目录。
这个SDK是在VS2008+Qt 5基础上开发的,在Windows 10 + Visual Studio 2015 Update 3+ Qt 5.7.0上编译会通不过。会出现如下错误:
error LNK2019: 无法解析的外部符号 __iob_func
SDK使用了三个库,分别是cJSON、OpenSSL和libCurl。cJSON不用担心,直接使用。问题是另两个库需要重新编译。
因此,需要下载OpenSSL和libCurl的源代码,重新编译生成最新静态库文件。
第二章 下载libCurl官方源码
下载地址:
https://curl.haxx.se/download.html
选择最新包,curl-7.50.3.tar.gz
在此处可以找到VS2015安装指南:
https://github.com/DynamsoftRD/libcurl-sample
本库比较好编译,网上介绍都已经过时,不足为训。因此需要仔细阅读官方说明文档。步骤如下:
1、 下载解压。例如E:\Qt\curl-openssl\curl-7.50.3,您可以自由选择解压目标地址。
2、 进入E:\Qt\curl-openssl\curl-7.50.3\projects\Windows\VC14
3、 双击打开curl-all.sln,使用VS2015打开即可。
4、 在下图中,选择点击Lib Debug,编译;再选择Lib Release,编译。所谓“编译”即点击“本地windows调试器”即可。
5、 回退两级目录,在E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14中可以找到对应于lib debug和lib release的目录,编译好的静态库文件就在这两个目录里面。
6、 分别把E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14\LIB Debug\libcurld.lib 和 E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14\LIBRelease\libcurl.lib 复制出来,放到E:\Qt\AlipayOpenapiCpp\libs里面。
7、 打开E:\Qt\AlipayOpenapiCpp\libs\include,把E:\Qt\AlipayOpenapiCpp\libs\include\下的curl目录删掉,然后把E:\Qt\curl-openssl\curl-7.50.3\include的curl目录(放的都是头文件)复制过来。
第三章 下载OpenSSL官方源码
需要做准备工作:
1、下载地址:https://www.openssl.org/source/
选择最新包,openssl-1.1.0.tar.gz
2、从http://www.activestate.com/activeperl/downloads 下载并安装最新的ActivePerl。
3、可选。从http://www.nasm.us/ 下载并安装Nasm汇编器。
网上介绍都已经过时,不足为训。例如都提到
有两个文件INSTALL.W32, INSTALL.W64,在解压文件里是找不到的。需要仔细阅读官方说明文档。说明文档也有地方讲得不清楚,甚至有文字错误。
步骤如下:
1、 下载解压。例如E:\Qt\openssl-1.1.0,您可以自由选择解压目标地址。
2、 需要使用VS2015的命令窗口来编译,因此找到并打开
3、 测
试Perl,输入perl-v,如果窗口输出如下,表示前面的Perl安装成功了。 |
4、 在下图中,依次执行命令:
进入E:\Qt\openssl-1.1.0\openssl-1.1.0,设置环境。
5、 如果按网上的提示操作,如编译Win32:
perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
就掉进坑了。因为我们windows10没有权限在C盘创建目录。后续步骤更麻烦,足够浪费几天时间。最简便的方法如下:
进入E:\Qt\openssl-1.1.0\openssl-1.1.0
输入:nmake,开始编译了!
编译好的静态库文件就在这个目录里面。分别是libcrypto.lib和libssl.lib
6、 分别把E:\Qt\openssl-1.1.0\openssl-1.1.0里面的两个文件libcurld.lib 和 libssl.lib 复制出来,放到E:\Qt\AlipayOpenapiCpp\libs里面。
7、 打开E:\Qt\AlipayOpenapiCpp\libs\include,把E:\Qt\AlipayOpenapiCpp\libs\include\下的openssl目录删掉,然后把E:\Qt\openssl-1.1.0\openssl-1.1.0\include的openssl目录(放的都是头文件)复制过来。
第四章 配置环境
两个库编译好了,已经是最新的了。下面就是配置支付宝官网提供的SDK环境的时候了。
1、 进入E:\Qt\AlipayOpenapiCpp,打开Openapi.sln,用VS2015打开,您的VS2015必须要有Qt 5.7.0的插件。如果没有,请去微软官网上下载使用。或者在VS2015 > 工具 > 扩展与更新,搜索Qt 5.7.0插件,并安装。
2、 在解决方案资源管理器,选中工程名OpenApi,右击,选择属性。
3、 属性页配置环境如下:
1)配置属性 > VC++目录 > 包含目录,添加如下三项:
E:\Qt\AlipayOpenapiCpp\libs\include
E:\Qt\AlipayOpenapiCpp\libs\include\openssl
E:\Qt\AlipayOpenapiCpp\libs\include\curl
2)配置属性 > VC++目录 > 库目录,添加如下三项:
E:\Qt\AlipayOpenapiCpp\libs\include
3)配置属性 > C/C++ > 预处理器,添加如下一项
CURL_STATICLIB
4)配置属性 > C/C++ >代码生成 >运行库,改为
多线程 (/MT)
5)配置属性 > 链接器 > 输入 > 附加依赖项,添加
libssl.lib
libcrypto.lib
ws2_32.lib
wldap32.lib
libcurld.lib
libcurl.lib
GDI32.LIB
ADVAPI32.LIB
CRYPT32.LIB
4、源代码不需要任何改动,可以直接使用,不妨一试。成功了!