您的位置:首页 > 编程语言 > C语言/C++

支付宝C++接口编译 (Windows 10 + Visual Studio 2015Update 3+ Qt 5.7.0)

2016-09-16 12:55 447 查看
支付宝C++接口编译

本文目标是:在使用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、源代码不需要任何改动,可以直接使用,不妨一试。成功了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息