使用TShark C ++源文件在添加所需库后剖析消息时未定义的引用

问题描述 投票:0回答:1

我想使用TShark源文件在C ++中剖析消息(例如rrc sib 3消息)。我已完成以下步骤:

  1. 下载wireshark-2.6.6.tar.xz并转到解压缩的文件夹。
  2. sudo ./configure --prefix=/home/***/build/
  3. sudo make -j 8
  4. sudo make install(之后我有一个构建文件夹,其中包含bin,include,lib,共享文件夹。)
  5. 打开C ++ ide(Qt)并添加以下库: LIBS += -L/home/***/build/lib/ -lwireshark \ -L/home/***/build/lib/ -lwiretap \ -L/home/***/build/lib/ -lwsutil \ -L/home/***/build/lib/ -lwscodecs
  6. 当然,我包括这样的路径: INCLUDEPATH += /home/***/build/include/wireshark DEPENDPATH += /home/***/build/include/wireshark
  7. 还有我在步骤1中下载的wireshark源文件夹: INCLUDEPATH += /home/***/wireshark-2.6.6 DEPENDPATH += /home/***/wireshark-2.6.6
  8. 在Qt中打开TShark.c文件(/home/***/wireshark-2.6.6/tshark.c)。

在这些步骤之后,似乎每件事都应该没问题,但是我有大约70个函数的未定义引用,我认为我应该在步骤5中添加一些其他库。

我的代码的一部分(tshark.c)如下:

...
...
...
static int
real_main(int argc, char *argv[])
{
   ...
   initialize_funnel_ops();
   return exit_status;
}
int
main(int argc, char *argv[])
{
   return real_main(argc, argv);
}
...
...
...

initialize_funnel_ops()中的/build/include/wireshark/epan/funnel.h函数给出了这个错误:

error: undefined reference to `initialize_funnel_ops'

某些其他功能也会出现此错误。

那我怎么解决呢?我应该添加一个新库吗?或者我在添加库和路径时犯了错误?

c++ qt wireshark tshark wireshark-dissector
1个回答
1
投票

顶级的Wireshark CMakeLists.txt文件应该可以帮助您找出tshark需要的库和文件。其中一个依赖是${TSHARK_TAP_SRC},其中包括${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c,而tap-funnel.cinitialize_funnel_ops()定义的文件。

© www.soinside.com 2019 - 2024. All rights reserved.