PageSourceSearch

https://pcapplusplus.github.io/assets/js/4c41f480.b7ef181a.js

js pcapplusplus.github.io collected 2026-10-03 09:44:49 UTC 19,985 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkpcapplusplus_github_io=globalThis.webpackChunkpcapplusplus_github_io||[]).push([[223],{507(e,s,i){i.r(s),i.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>d,metadata:()=>l,toc:()=>o});const l=JSON.parse('{"id":"install/vs","title":"Build on Windows (VS)","description":"Please visit the supported platforms page to see the Visual Studio versions currently supported in PcapPlusPlus.","source":"@site/versioned_docs/version-v26.07/install/vs.mdx","sourceDirName":"install","slug":"/install/vs","permalink":"/docs/install/vs","draft":false,"unlisted":false,"editUrl":"https://github.com/PcapPlusPlus/pcapplusplus.github.io/edit/master/versioned_docs/version-v26.07/install/vs.mdx","tags":[],"version":"v26.07","frontMatter":{"title":"Build on Windows (VS)"},"sidebar":"docs","previous":{"title":"Build on MacOS","permalink":"/docs/install/macos"},"next":{"title":"Build on Windows (MinGW-w64)","permalink":"/docs/install/mingw"}}');var n=i(4848),t=i(8453);const d={title:"Build on Windows (VS)"},r="Build From Source on Windows - Visual Studio",c={},o=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Build",id:"build",level:2},{value:"Installation",id:"installation",level:2},{value:"Running tests",id:"running-tests",level:2}];function a(e){const s={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"build-from-source-on-windows---visual-studio",children:"Build From Source on Windows - Visual Studio"})}),"\n",(0,n.jsxs)(s.p,{children:["Please visit the ",(0,n.jsx)(s.a,{href:"../platforms",children:"supported platforms page"})," to see the Visual Studio versions currently supported in PcapPlusPlus."]}),"\n",(0,n.jsx)(s.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,n.jsx)(s.p,{children:"In order to build PcapPlusPlus on Windows with Visual Studio you need the following components:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:["A ",(0,n.jsx)(s.a,{href:"../platforms",children:"supported version"})," of Microsoft Visual Studio"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"CMake"})," which can be installed from: ",(0,n.jsx)(s.a,{href:"https://cmake.org/install/",children:"https://cmake.org/install/"})," or with ",(0,n.jsx)(s.code,{children:"pacman"})," if using MSYS2: ",(0,n.jsx)(s.code,{children:"pacman -S mingw-w64-x86_64-cmake"})]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"OPTIONAL"})," If you want to use WinPcap/Npcap features such as packet capture and have ",(0,n.jsx)(s.code,{children:"-DPCAPPP_USE_PCAP=ON"}),":"]}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:["Download and install ",(0,n.jsx)(s.a,{href:"https://www.winpcap.org/install/",children:"WinPcap"})," ",(0,n.jsx)(s.strong,{children:"OR"})," ",(0,n.jsx)(s.a,{href:"https://npcap.com/#download",children:"Npcap"})," on your system"]}),"\n",(0,n.jsxs)(s.admonition,{title:"Note for Npcap:",type:"tip",children:[(0,n.jsxs)(s.p,{children:["If you install ",(0,n.jsx)(s.strong,{children:"Npcap"})," please check the ",(0,n.jsx)(s.code,{children:"Install Npcap in WinPcap API-compatilbility mode"})," option during installation:"]}),(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Npcap-WinPcap compatilibitly",src:i(7202).A+"",width:"355",height:"75"})})]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:["Download and install ",(0,n.jsx)(s.a,{href:"https://www.winpcap.org/devel.htm",children:"WinPcap developer's pack"})," ",(0,n.jsx)(s.strong,{children:"OR"})," ",(0,n.jsx)(s.a,{href:"https://nmap.org/npcap/#download",children:"Npcap SDK"})," - containing the wpcap library PcapPlusPlus is linking with plus relevant ",(0,n.jsx)(s.code,{children:"h"})," files."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsx)(s.p,{children:"In some cases you also need to download and install:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"https://support.microsoft.com/en-us
1/help/2977003/the-latest-supported-visual-c-downloads",children:"Microsoft Visual C++ Redistributable"})," for your version of Visual Studio"]}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.a,{href:"https://www.microsoft.com/en-us/download/confirmation.aspx?id=14632",children:"Microsoft Visual C++ 2010 Redistributable"})}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"OPTIONAL"})," - download ",(0,n.jsx)(s.a,{href:"https://github.com/facebook/zstd/releases/latest",children:"Zstd"})," libraries if you wish to enable ",(0,n.jsx)(s.a,{href:"../features#readingwriting-pcapng-files-with-compression",children:"PCAPNG streaming compression support"})]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"build",children:"Build"}),"\n",(0,n.jsxs)(s.p,{children:["Assuming you want to build PcapPlusPlus into a ",(0,n.jsx)(s.code,{children:"build"})," directory:"]}),"\n",(0,n.jsx)(s.p,{children:"With WinPcap/Npcap support:"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-shell",children:"cmake -DPCAP_ROOT=<NpcapSDK_or_WinPcapDevPack_Directory> -S . -B build\n"})}),"\n",(0,n.jsx)(s.p,{children:"Without WinPcap/Npcap support:"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-shell",children:"cmake -DPCAPPP_USE_PCAP=OFF -S . -B build\n"})}),"\n",(0,n.jsx)(s.p,{children:"You can use the following CMake options to determine specific parameters:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["To build for a specific (non-default) version of Visual Studio you can use the ",(0,n.jsx)(s.code,{children:"-G"})," option, for example ",(0,n.jsx)(s.code,{children:'-G "Visual Studio 16 2019"'})," will builf for VS 2019"]}),"\n",(0,n.jsxs)(s.li,{children:["To build for a specific platform you can use the ",(0,n.jsx)(s.code,{children:"-A"})," option, for example: ",(0,n.jsx)(s.code,{children:"-A x64"})," or ",(0,n.jsx)(s.code,{children:"-A Win32"})]}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["This will create a VS Solution file in the build directory: ",(0,n.jsx)(s.code,{children:"build\\PcapPlusPlus.sln"})," and multiple VS project files ",(0,n.jsx)(s.code,{children:".vcxproj"}),"."]}),"\n",(0,n.jsxs)(s.p,{children:["This solution file contains all the projects required to build the PcapPlusPlus libraries, examples, and tests. In this solution you'll find the ",(0,n.jsx)(s.code,{children:"ALL_BUILD"}),"\nproject that builds everything."]}),"\n",(0,n.jsx)(s.p,{children:"There are multiple options to build PcapPlusPlus:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Use CMake and choose the configuration:","\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-shell",children:"cmake --build build --config Release\n"})}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["Open Visual Studio, choose platform and configuration and build the ",(0,n.jsx)(s.code,{children:"ALL_BUILD"})," project"]}),"\n",(0,n.jsxs)(s.li,{children:["Use ",(0,n.jsx)(s.code,{children:"MSBuild"})," and choose the platform and configuration, for example:","\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-shell",children:"msbuild PcapPlusPlus.sln -target:ALL_BUILD /p:Configuration=Release /p:Platform=x64\n"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"After a successful build the following artifacts will be created:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["PcapPlusPlus libs:","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.code,{children:"build\\Common++\\<Debug/Release>\\libCommon++.a"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.code,{children:"build\\Packet++\\<Debug/Release>\\libPacket++.a"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.code,{children:"build\\Pcap++\\<Debug/Release>\\libPcap++.a"})}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["PcapPlusPlus examples binaries under ",(0,n.jsx)(s.code,{children:"build\\examples_bin\\<Debug/Release>"})]}),"\n",(0,n.jsxs)(s.li,{children:["PcapPlusPlus tests:","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.code,{children:"<PcapPlusPlus_Dir>\\Tests\\Packet++Test\\Bin\\Packet++Test.exe"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.code,{children:"<PcapPlusPlus_Dir>\\Tests\\Pcap++Test\\Bin\\Pcap++Test.exe"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"The following configuration options are available (on top of CMake's built-in options):"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{style:{textAlign:"left"},children:"Option"}),(0,n.jsx)(s.th,{style:{textAlign:"left"},children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_USE_PCAP=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build PcapPlusPlus with WinPcap/Npcap support (default value is ",(0,n.jsx)(s.code,{children:"ON"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAP_ROOT=<DIR>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Npcap SDK or WinPcap developer pack directory (mandatory option if ",(0,n.jsx)(s.code,{children:"-DPCAPPP_USE_PCAP=ON"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_BUILD_EXAMPLES=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build PcapPlusPlus examples (default value is ",(0,n.jsx)(s.code,{children:"ON"})," if building the project itself, otherwise ",(0,n.jsx)(s.code,{children:"OFF"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_BUILD_TESTS=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build PcapPlusPlus tests (default value is ",(0,n.jsx)(s.code,{children:"ON"})," if building the project itself, otherwise ",(0,n.jsx)(s.code,{children:"OFF"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_BUILD_TUTORIALS=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build PcapPlusPlus tutorials. This option is only available if ",(0,n.jsx)(s.code,{children:"DPCAPPP_BUILD_EXAMPLES=ON"}),". The tutorials binaries will be under ",(0,n.jsx)(s.code,{children:"build\\tutorials_bin"})," (default value is ",(0,n.jsx)(s.code,{children:"OFF"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_INSTALL=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Install PcapPlusPlus (default value is ",(0,n.jsx)(s.code,{children:"ON"})," if building the project itself, otherwise ",(0,n.jsx)(s.code,{children:"OFF"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_USE_WINDIVERT=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Setup PcapPlusPlus with WinDivert (default value is ",(0,n.jsx)(s.code,{children:"OFF"}),"). When this option is used CMake will look for an installed version of WinDivert on the build machine (by default under ",(0,n.jsx)(s.code,{children:"C:\\Program Files\\WinDivert"})," or ",(0,n.jsx)(s.code,{children:"C:\\WinDivert"}),"). If WinDivert is installed in a different directory please use ",(0,n.jsx)(s.code,{children:"-DWinDivert_ROOT"})]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DWinDivert_ROOT=<DIR>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["When setting up PcapPlusPlus with WinDivert and WinDivert is not installed in the default directory (under ",(0,n.jsx)(s.code,{children:"C:\\Program Files\\WinDivert"})," or ",(0,n.jsx)(s.code,{children:"C:\\WinDivert"}),") use this option to indicate WinDivert installation directory"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DBUILD_SHARED_LIBS=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build shared libs (default value is ",(0,n.jsx)(s.code,{children:"OFF"}),")"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_BUILD_PCAPPP=<ON/OFF>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Build the Pcap++ library (default value is ",(0,n.jsx)(s.code,{children:"ON"}),"). Turning it off will only build Common++ and Packet++ and avoid third-party depen
1dencies such as libpcap or WinPcap/Npcap"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"left"},children:(0,n.jsx)(s.strong,{children:(0,n.jsx)(s.code,{children:"-DPCAPPP_LOG_LEVEL=<0/1/2/3>"})})}),(0,n.jsxs)(s.td,{style:{textAlign:"left"},children:["Set compile time log level: Off (",(0,n.jsx)(s.code,{children:"0"}),"), Error (",(0,n.jsx)(s.code,{children:"1"}),"), Info (",(0,n.jsx)(s.code,{children:"2"}),"), Debug (",(0,n.jsx)(s.code,{children:"1"}),") (Default value is ",(0,n.jsx)(s.code,{children:"Debug"}),")"]})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"installation",children:"Installation"}),"\n",(0,n.jsxs)(s.p,{children:["Windows doesn't have a default install directory, but you may want to see all libs, header files and examples under one directory (which is not the ",(0,n.jsx)(s.code,{children:"build"})," directory).\nHere is how to acheive that:"]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-shell",children:'set DESTDIR=<DIR>\ncmake --install build --prefix "/"\n'})}),"\n",(0,n.jsx)(s.h2,{id:"running-tests",children:"Running tests"}),"\n",(0,n.jsxs)(s.p,{children:["PcapPlusPlus contains a set of test-cases you can run to make sure that everything works correctly on your system. ",(0,n.jsx)(s.a,{href:"../tests",children:"This guide"})," contains detailed instructions on how to run them."]})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},7202(e,s,i){i.d(s,{A:()=>l});const l="data:image/png;base64,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"},8453(e,s,i){i.d(s,{R:()=>d,x:()=>r});var l=i(6540);const n={},t=l.createContext(n);function d(e){const s=l.useContext(t);return l.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),l.createElement(t.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.