Hello all,
I am currently trying to embed Wireshark's Lua into my C++ GUI that I have made
in order to customise Wireshark.
So far I have gone about adding the following to my existing GUI code.
TCPAnalyser_dialog.cpp
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
#include "epan\wslua\register_wslua.h"
}
//.... other includes for GUI Code here
//... Other GUI code here
void TCPAnalyserTreeWidget::Analyse(){
//More of my own code
lua_State *state = luaL_newstate();
luaL_openlibs(state);
//this function below is giving errors
wslua_register_classes(state);
QMessageBox msgBox;
// run the Lua script
QString f;
int lua1;
const char* filename = "alert.lua";
//load file
lua1 = luaL_loadfile(state, filename);
if (lua1 != LUA_OK){
f = "Loadfilefail";
}
//debug code
msgBox.setText(f);
msgBox.exec();
int lua;
lua = luaL_dofile(state, filename);
if (lua !=LUA_OK){
f = "dofilefailed";
const char* message = lua_tostring(state, -1);
f = message;
lua_pop(state, 1);
}
//debug code
msgBox.setText(f);
msgBox.exec();
}
>From here I have gone and edited the Perl script which writes the file
>register_wslua.c (which from what I understand adds Wireshark functions and
>classes to the Lua state) as this would be rewritten during each build of the
>wslua project
make-reg.pl
print C '#include "register_wslua.h"' . "\n\n";
#print C '#include "wslua.h"' . "\n\n";
#print C '#include "lua_bitop.h"' . "\n\n";
other than the two prints being commented out and the addition of my include in
place of config.h it is left unchanged
The header File I created is as follows:
register_wslua.h
#include "config.h"
#include "epan\wslua\wslua.h"
#include "epan\wslua\lua_bitop.h"
#ifndef _register_wslua_h
#define _register_wslua_h
static void wslua_reg_module(lua_State* L, const char *name _U_, lua_CFunction
func);
void wslua_register_classes(lua_State* L);
void wslua_register_functions(lua_State* L);
#endif
>From what I understand this should be working, however, I am getting the
>following errors:
Error 1 error LNK2019: unresolved external symbol _wslua_register_classes
referenced in function "private: void __thiscall
TCPAnalyserTreeWidget::Analyse(void)" (?Analyse@TCPAnalyserTreeWidget@@AAEXXZ)
C:\Users\Kunal\Work\FinalProject\Development\wsbuild32_1\qtui.lib(TCPAnalyser_dialog.obj)
wireshark
Error 2 error LNK1120: 1 unresolved externals
C:\Users\Kunal\Work\FinalProject\Development\wsbuild32_1\run\RelWithDebInfo\Wireshark.exe
1 1 wireshark
I can't for the life of me figure out why these errors are occurring and I was
wondering if there was something I was missing. I have done a clean and a build
again just to make sure it was this which was causing the issue. I am getting
the same errors if instead of doing all of this, I just include the
epan\wslua\declare_wslua.h instead which points to the same functions.
Any help would be most appreciated!
Thanks in advance,
Kind Regards,
Kunal Thakrar
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe