This was introduced in DPDK 20.11.5. 20.11.4 did not have these issues: There are a few header files that have multiple extern C declarations, and some of them have unbalanced braces. This causes C++ compiler errors. To find them all: $ find . -name '*.h'|xargs grep 'extern "C' > foo $ find . -name '*.h'|xargs grep 'extern "C'|uniq > bar $ diff foo bar 102d101 < ./lib/librte_eventdev/rte_eventdev_pmd.h:extern "C" { 105d103 < ./lib/librte_eventdev/rte_eventdev_pmd_pci.h:extern "C" { 110d107 < ./lib/librte_eventdev/rte_eventdev_pmd_vdev.h:extern "C" { 153d149 < ./lib/librte_ethdev/rte_ethdev_driver.h:extern "C" { rte_eventdev_pmd.h merely has two nested extern C blocks. rte_eventdev_pmd_pci.h has two nested extern C blocks, but only one closing brace at the bottom of the file. The same is true for rte_ethdev_driver.h and rte_eventdev_pmd_vdev.h. The latter three cause compilation errors when included from C++ code.