公司后台使用的是AES进行加解密的,是在Linux上的。加密之后解密很不方便,就想用QT实现一个界面AES加解密的小工具,但是QT本身是不支持openssl的,需要链接外部库。
想要QT可以正确链接oepnssl库,需要做如下事情
一、下载openssl压缩包
我下载的版是openssl-1.0.2k.tar.gz
路径:http://download.csdn.net/download/jackiehu2010/9845848
二、下载MSYS并正确安装perl和minGW
路径:http://download.csdn.net/download/chaojianhu/10199386
1.安装MSYS
点击安装可执行文件,一直下一步,没什么好说的。
2.安装perl
同MSYS,没什么说的
3.minGw
使用QT自带的minGW
4.设置MSYS的环境变量
设置环境变量,将perl和minGW的路径加到MSYS的PATH变量中
export PATH=$PATH:/你的perl安装路径/bin
export PATH=$PATH:/你的QT自带minGW路径/bin
三、MSYS环境下编译openssl动态库
1.将openssl的tar包拷贝到MSYS的安装路径下面
2.在MSYS环境中使用tar指令解压文件
命令 tar -zxvf openssl-xxxx
cd openssl-xxxx
3.动态编译openssl
./Configure --preifx=$PWD/dist shared mingw
make && make install
等待一会就编译好了,在dist的lib文件夹下有我们所需要的库文件,在dist/bin下有两个dll文件也很重要,一个是libssl32.dll,一个是eayssl32.dll。
四、修改QT工程pro文件
在QT项目的pro文件中增加如下语句
INCLUDEPATH += /你的openssl解压路径/include
LIBAS += /你的openssl编译路径/lib/libssl.dll.a \
/你的openssl编译路径/lib/libcrypto.dll.a
使用openssl API编写程序,编译链接没问题,运行时崩溃,别紧张,没找到动态库,将libssl32.dll、eayssl32.dll加到QT安装的bin目录下。
至此,问题解决