美文网首页
用VS2019编译Wireshark

用VS2019编译Wireshark

作者: whuangxm | 来源:发表于2019-12-30 06:46 被阅读0次

    本文介绍如何在Windows 10的Visual Studio 2019环境下,编译Wireshark源代码。

    一、准备Wireshark代码。

    具体地,访问https://www.wireshark.org/,下载Source Code。将其解压在某个文件夹下(以 C:\Development\wireshark为例)。

    二、安装相关工具软件

    1. 下载并安装 Visual Studio 2019

    2. 下载并安装 Qt 5 (使用 Downloads for open source users 即可)。

    3. 下载并安装 Python 3.8

    4. 安装 Chocolatey

    5. 打开 Windows 菜单 ,以管理员身份 运行 Windows PowerShell 。

    6. 运行Get-ExecutionPolicy。如果它返回Restricted,则运行Set-ExecutionPolicy AllSignedSet-ExecutionPolicy Bypass -Scope Process

    7. 运行 :Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

    8. choco install(或其缩写形式:cinst)安装相关软件:

    9. CMake: choco install -y cmake

    10. Asciidoctor, Xsltproc 和 DocBook: choco install -y asciidoctorj xsltproc docbook-bundle

    11. Winflexbison:choco install -y winflexbison

    12. Perl: 安装 Strawberry Perl choco install -y strawberryperl, 或 Active Perl choco install -y activeperl

    如果DocBook下载太慢,可以观察控制台输出中相关的下载链接,使用百度云离线下载或迅雷等下载工具下载好,放在临时文件夹下 ,形如:C:\Users\【用户名】\AppData\Local\Temp\chocolatey\docbook-bundle\1.0.0。重新运行choco install程序即可。

    三、生成构造文件

    1. 打开 Windows 菜单 ,运行 Visual Studio 2019 文件夹下的 【x64 Native Tools Command Prompt for VS 2019】(x86架构使用【x86 Native Tools Command Prompt for VS 2019】)菜单项。其命令行为 %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
    2. 新建 目标目录 C:\Development\wsbuild64,并使用cd C:\Development\wsbuild64进入该目录。
    3. 运行cmake -G "Visual Studio 16 2019" -A x64 ..\wireshark。 (x86架构使用 cmake -G "Visual Studio 16 2019" -A Win32 ..\wireshark。)

    直至出现以下提示,为生成成功。

    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Development/wsbuild64
    

    四、生成Wireshark

    运行msbuild /m /p:Configuration=RelWithDebInfo Wireshark.sln。或者,使用 Visual Studio 2019 打开 Wireshark.sln 文件,按下F7编译。

    如果你使用的是Windows x86 架构,建议在文中 x64 的位置选择相应的 win32 版本。

    如果你使用的是 Windows x64 架构,可能会遇到一个兼容性错误。

    Qt5Multimedia.lib(Qt5Multimedia.dll) : fatal error LNK1112: 模块计算机类型“x86”
    与目标计算机类型“x64”冲突 [C:\Development\wsbuild64\wireshark.vcxproj]
    

    这个错误是因为 wireshark.vcxproj 文件中,在很多 x64 配置处,将“包含”或“库”的路径写错成 win32 版本。如:msvc2017_64 写成 msvc2017 。在记事本中,将其批量替换即可(不要盲目全局替换误伤其 Win32 平台版本)。

    至此,你可以使用 Visual Studio 2019 打开编辑和重新编译 Wireshark 了。

    五、和Qt的兼容性问题

    如果不经过其它配置,在运行Wireshark.exe时,会出现找不到Qt相关dll的错误。解决这个问题并不难,在开始菜单,右键【系统】菜单,单击右侧【相关信息】下的【系统信息】链接,或者运行控制面板的【系统】项。单击系统属性中的【高级】页面下的【环境变量】按钮,编辑【Path】(用户变量或系统变量都可以),添加入Qt的安装目录,形如:C:\Qt\5.14.0\msvc2017_64\bin

    image

    虽然如此,在运行程序时,仍然会遇到【This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.】错误。重装解决不了问题的,那是给普通用户看的,而你是程序员。不知道为什么Qt故意把问题讲的这么不清不楚的,把C:\Qt\5.14.0\msvc2017_64\plugins\platforms 复制到可执行程序的同一级目录下即可。以上是x64程序的解决方案,x86的解决方案请参考解决。

    image

    参考文献:

    [1] 2.2. Win32/64: Step-by-Step Guide. Wireshark Documents. 2019-12-29.

    [2] Chocolatey Software | Installing Chocolatey. Chocolatey Software. 2019-12-29.

    相关文章

      网友评论

          本文标题:用VS2019编译Wireshark

          本文链接:https://www.haomeiwen.com/subject/smhpoctx.html