2014-01-31 5 views
0

Я пытаюсь создать диссектор для Wireshark на платформе Windows. Но, я получаю сообщение об ошибке.Ошибка Wireshark Disscetor на платформе Windows

  1. Я следил за этим link, чтобы установить Wireshark из источника на окна, и я смог успешно создать и запустить программное обеспечение.
  2. Затем, используя README.plugins, я добавил плагин и сделал все изменения, упомянутые в файле.
  3. С плагином он был успешно создан, но всякий раз, когда я пытался его запустить, появляется диалоговое окно с сообщением The plugin 'ABC.dll' has neither a register routine, a register_tap_listener or a register_wtap_module or a register_codec_module routine.. Хотя wirehark работает нормально, но мой плагин не входит в него.
  4. Окружающая среда Linux: Я попытался скомпилировать и запустить на платформе Linux, и он работал нормально, с включенным плагином.
    Может кто-нибудь сказать мне, где я могу ошибиться на платформе Windows. Благодарю.

ответ

0

Существует небольшая магия, которая возникает при создании плагинов в Windows, так что определенные символы в DLL объявляются как экспортированные, чтобы их можно было найти в DLL во время выполнения. (Я недавно не врывался во все детали, но механизм отличается от * nix, поэтому результаты на каждой платформе могут быть разными).

Какую версию Wireshark вы строите? (Как вы получаете источники Wireshark?).

Конкретное сообщение об ошибке, которое вы получаете, предполагает, что вы можете создать версию WWireshark 1.10. (Сообщение изменилось в версии разработки Wireshark (1.11)).

В любом случае, что-то не совсем верно (очевидно) относительно того, как DLL строится на Windows.

Мое предложение в качестве отправной точки:

Вы могли бы получить представление о том, что неправильно, сравнивая файл plugin.c (который генерируется во время сборки) в папке плагина на Windows, с plugin.c из одного из других каталогов плагинов Windows Wireshark.

Магия возникает в этом файле.

вещи, как:

WS_DLL_PUBLIC_NOEXTERN void 
plugin_reg_handoff(void) 
{ 
    {extern void proto_reg_handoff_unistim (void); proto_reg_handoff_unistim();} 
} 
+0

спасибо много. Я отлаживал Makefile.nmake, от которого зависел файл plugin.c, и он запускался без каких-либо ошибок. – vidzi

Смежные вопросы