Кажется, это простой случай недружественной пользователю упаковки и организации кода. Вы должны сначала включить заголовок "config" для Wireshark. Я бы написал так:
#include <wireshark/config.h> /* needed by epan */
#include <epan/epan.h>
Убедитесь, что вы делаете это первым, когда включаете заголовки из этой библиотеки.
Как я узнал? Я копался в epan/proto.h
и обнаружил, что он условно включает varargs.h
, только если HAVE_STDARG
не установлен. Затем я grep
'в /usr/include/wireshark/
и обнаружил, что эта переменная установлена в config.h
, поэтому я подумал, что, возможно, необходимо включить ее, и вот, это было.
Мне также нужно было добавить -lwiretap
, чтобы удовлетворить связь с libwireshark
.
Еще один недостаток в организации wireshark-dev
заключается в том, что он не зависит (на уровне пакета) от wireshark-common
, хотя последний действительно обеспечивает libwireshark.so
, на который ссылается первый символ. Поэтому вы должны убедиться, что wireshark-common
установлен или что /usr/lib/libwireshark.so
и его референт существуют.