编译ZLMediaKit(win10+msvc2019_x64)

2024-01-08 07:36

本文主要是介绍编译ZLMediaKit(win10+msvc2019_x64),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

因工作需要,需要ZLMediaKit,为方便抓包分析,最好在windows系统上测试,但使用自己编译的第三方库一直出问题,无法编译通过。本文档记录下win10上的编译过程,供有需要的小伙伴使用

一、需要安装的软件

1.git

下载地址:Git - Downloading Package

这个网上资料很多,就不解释了

2.cmake

Download CMake

这个网上资料也很多,同样不解释了

3.vs2019

这个不解析了

二、下载配置 vcpkg

1.下载vcpkg,下载路径假设为: C:\work\develop, 执行

git clone https://github.com/microsoft/vcpkg

2.下载预编译的 vcpkg 包管理工具

.\vcpkg\bootstrap-vcpkg.bat -disableMetrics

3.编译openssl

.\vcpkg\vcpkg.exe install --triplet=x64-windows-static openssl

4.编译libsrtp,需要启用openssl,需要找到vcpkg_configure_cmake文件,

具体文件地址为C:\work\develop\vcpkg\ports\libsrtp\portfile.cmake

其中C:\work\develop\为vcpkg的目录地址

添加代码,-DENABLE_OPENSSL:BOOL=ON,以上是笔者的文件

然后进行编译:

.\vcpkg\vcpkg.exe install --triplet=x64-windows-static libsrtp

编译完成后,就可以在C:\work\develop\vcpkg\installed\x64-windows-static目录下找到已经编译完成的库

其中C:\work\develop\为vcpkg的目录地址

注:对应命令可能需要执行多次,此过程可能比较长

三、获取ZLMediaKit源码


使用 Git 克隆 ZLMediaKit 的代码并初始化子模块

# 国内用户推荐从 Gitee 下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 初始化子模块 (必须执行)
git submodule update --init

 注:不能通过下载 zip 包的方式下载源码。因为 ZLMediaKit 依赖于第三方代码并通过 Git 子模块的方式管理。

四、编译ZLMediaKit源码

使用也很简单,可以直接引用生成的静态库,也可以直接导入编译链文件

以上两种方法,笔者都编译成功了,以下介绍下后者的使用方法

导入编译链文件,可以直接使用命令行,参考如下

mkdir build
cd build
$VCPKG_CMAKE = 'C:\work\develop\vcpkg\scripts\buildsystems\vcpkg.cmake'
$VCPKG_INSTALL_PATH = 'C:\work\develop\vcpkg\installed\x64-windows-static'$CMAKE_OPTIONS = @("-GCodeBlocks - Ninja""-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo""-DCMAKE_C_COMPILER:STRING=cl.exe""-DCMAKE_CXX_COMPILER:STRING=cl.exe""-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_CMAKE""-DCMAKE_PREFIX_PATH:FILEPATH=$VCPKG_INSTALL_PATH""-DVCPKG_TARGET_TRIPLET:STRING=x86-windows-static""-DENABLE_WEBRTC:BOOL=ON"
)
cmake .. @CMAKE_OPTIONS
cmake --build . --target all

但笔者使用的图形界面操作的

打开cmake-gui

 选择正确的源码目录和编译目录,然后点击Configure

在弹出的对话框中,选择指定编译链文件,如下是笔者的选择

 

在vcpkg目录中,找到对应的vcpkg.cmake文件,以下是笔者的目录

 

过会就可以自己修改下,感兴的选项了,如

生成的库文件,输出目录

其中如下选项需要修改下

1.VCPKG_TARGET_TRIPLET,需要修改为x64-windows-static(与vcpkg的实际目录对应)

2.编译 64 位程序在链接 openssl 时还需要链接 Crypt32.lib 和 ws2_32.lib,

直接添加在链接库后面就可以,以下是笔者添加的

Configure完成后,点击Generate,完成后,会在编译输出目录生成vs项目文件

可以双击这个文件或点击CMake-gui中的Open Project,直接打开VS2019

接下来,切换成Release、编译、安装 

若一切正常,就可以得到所需的文件了

已经编译好的文件下载(Release模式)

后记

因为众所周知的缘故,建议使用vcpkg下载时,使用科学的上网方式,否则可能无法正常下载

因时间所限,未对之前,无法直接使用自己编译的第三方库,若有已经找出原因的小伙伴,希望能留言说明下

这篇关于编译ZLMediaKit(win10+msvc2019_x64)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582721

相关文章

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、