windows端QT集成srt协议(带openssl)

首先先看你的下载的qt用的是Mingw还是Msvc,我用的是Mingw的,这里只做Mingw的教程。

记住你的Mingw版本,比如我的是Qt (MinGW-W64 8.1.0),记住这个版本号,后续编译openssl和srt要用到相同版本的Mingw,不然集成进qt时会不兼容。

下载openssl源码:OpenSSL,https://www.openssl.org/注意不要下载预编译包,预编译包只支持Msvc,要下载压缩包,我下载的openssl1.1.1w.tar.gz,然后解压放到你的目录。

下载srt源码:

git clone https://github.com/Haivision/srt.git

通过git克隆,没有git先下载git,克隆过来后放到你的目录,最好跟openssl的目录一致。

下载MSYS2:MSYS2Software Distribution and Building Platform for Windowshttps://www.msys2.org/

MSYS2 自带 MinGW-W64 工具链(GCC、G++、Make 等),与 Qt 的 MinGW 版本完全兼容。

下载完后打开里面的mingw64.exe,不用输入命令下载MinGw工具链,因为下载的几乎都是新版本的,与qt的不兼容,直接配置临时环境变量

export  PATH="/d/qt/Tools/mingw810_64/bin:$PATH"

其中的/d/qt/Tools/mingw810_64/bin换成你自己qt下的路径,配置完后再输入gcc --version,如果显示的版本和你qt的一样就可以进行后续编译了。  

然后进入你的openssl-1.1.1w源码目录

cd /d/srt_project/source/openssl-1.1.1w

cd后面的路径换成你自己的路径

在这里先说一下我的目录结构,我是在d盘有一个srt_project文件夹,在其里面先创一个install文件夹,再创一个source文件夹,source里面就存放openssl1.1.1w和src的源码,后续写代码编译的时候看着我的目录改成你的目录再编译,或者直接用我的目录结构。

进入openssl-1.1.1w源码目录后,执行以下:

./Configure mingw64 shared \
  --prefix=/d/srt_project/install/openssl \
  --openssldir=/d/srt_project/install/openssl/ssl

可换成你自己的目录,执行后再输入:

mkdir -p /d/srt_project/install/openssl/ssl/certs

然后输入:make -j8 && make install

以上就是openssl配置和安装的过程,如果有什么报错或者确实什么工具,直接把报错放到ai上,看缺少什么就安装什么就好了。

然后进入你的srt源码目录

cd /d/srt_project/source/srt

再输入:

mkdir build && cd build

为避免冲突,临时移除 MSYS2 的系统 OpenSSL:

mv C:/msys64/mingw64/lib/pkgconfig/libcrypto.pc C:/msys64/mingw64/lib/pkgconfig/libcrypto.pc.bak
mv C:/msys64/mingw64/lib/pkgconfig/openssl.pc C:/msys64/mingw64/lib/pkgconfig/openssl.pc.bak

然后使用以下参数强制使用你编译的 OpenSSL 1.1.1w:

cmake -G "MinGW Makefiles" \
  -DCMAKE_INSTALL_PREFIX=/d/srt_project/install/srt \
  -DOPENSSL_ROOT_DIR=/d/srt_project/install/openssl \
  -DOPENSSL_CRYPTO_LIBRARY=/d/srt_project/install/openssl/lib/libcrypto.dll.a \
  -DOPENSSL_SSL_LIBRARY=/d/srt_project/install/openssl/lib/libssl.dll.a \
  -DOPENSSL_INCLUDE_DIR=/d/srt_project/install/openssl/include \
  -DCMAKE_C_COMPILER=/d/qt/Tools/mingw810_64/bin/gcc.exe \
  -DCMAKE_CXX_COMPILER=/d/qt/Tools/mingw810_64/bin/g++.exe ..

然后看你qt目录下的make工具名称是什么,我的在 D:\qt\Tools\mingw810_64\bin 中,make 工具的名称是 mingw32-make.exe

然后根据make工具名称再输入:

mingw32-make -j8 && mingw32-make install

如果都编译且安装的话,D:\srt_project\install里面就会有openssl和srt的库和头文件了,接下来就把它们集成进qt。

在 Qt 项目的 .pro 文件中添加以下内容,指定头文件和库的路径:

# 添加头文件路径
INCLUDEPATH += D:/srt_project/install/openssl/include \
               D:/srt_project/install/srt/include

# 添加库文件路径
LIBS += -LD:/srt_project/install/openssl/lib -lssl -lcrypto \
        -LD:/srt_project/install/srt/lib -lsrt

最后一步:Qt 程序运行时需要动态链接 openssl和 srt 的 dll 文件,把D:\srt_project\install里面的openssl和srt的所有.dll文件复制到qt的debugrelease目录下。

然后就可以再qt里运用它们啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值