Wireshark mailing list archives
Re: Lua embedded into C++
From: Pascal Quantin <pascal.quantin () gmail com>
Date: Wed, 1 Feb 2017 16:45:23 +0100
Hi Kunal, 2017-02-01 1:06 GMT+01:00 Kunal Thakrar <kunalthakrar () hotmail co uk>:
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 <http://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.
Because those symbols are part of libwireshark library (not the GUI) and are not exported. So you cannot access them. Not sure what you are trying to do here, but prsumably they should be declared with the WS_DLL_PUBLIC attribute (you will need to include ws_symbol_export.h file to get its definition). I personally do not know anything about Lua, so I do not know if you can safely create a new instance like this (some comments in the code suggest that only a single Lua state is supported) but this sounds hacky and scary.
Any help would be most appreciated! Thanks in advance, Kind Regards, Kunal Thakrar ____________________________________________________________ _______________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscr ibe
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Lua embedded into C++ Kunal Thakrar (Feb 01)
- Re: Lua embedded into C++ Pascal Quantin (Feb 01)
- <Possible follow-ups>
- Re: Lua embedded into C++ Kunal Thakrar (Feb 01)
- Re: Lua embedded into C++ Pascal Quantin (Feb 01)
- Re: Lua embedded into C++ Peter Wu (Feb 01)
- Re: Lua embedded into C++ Kunal Thakrar (Feb 01)
- Re: Lua embedded into C++ Pascal Quantin (Feb 01)
