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

时间:2019-02-25 06:23:02

标签: c++ qt wireshark tshark wireshark-dissector

我想使用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 (之后,我有一个 build 文件夹,其中包含 bin include lib share < / em>文件夹。)
  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'

此错误也会导致其他一些功能。

那我该如何解决呢?我应该添加一个新的图书馆吗?还是在添加库和路径时犯了错误?

1 个答案:

答案 0 :(得分:1)

顶级Wireshark CMakeLists.txt文件应帮助您确定tshark需要哪些库和文件。依赖项之一是${TSHARK_TAP_SRC},其中包括${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.ctap-funnel.c是定义了initialize_funnel_ops()的文件。