J'ai fait une classe à l'aide wxwdigetsliaisons wxlua ne fonctionne pas avec mes shaderobjects faites avec d'SWIG
//wrapper over wxIPV4address
class IPV4addressLua : public wxIPV4address
{
public:
IPV4addressLua();
~IPV4addressLua();
bool SetService (const wxString &service);
bool SetService (unsigned short service);
unsigned short GetService() const;
wxSockAddress* GetwxSockAddress();
wxIPV4address GetwxIPV4address();
wxSocketServer* GetwxSocketServer();
};
rendre le fichier abc.i pour l'entrée SWIG comme celui-ci
%module wxAppManagerLua
%{
#include "wxAppManager.h"
#include "wx/socket.h"
%}
// wrapper sur wxIPV4address classe IPV4addressLua //: wxIPV4address publique ................... ....
j'écris faire fichier pour générer des liaisons SWIG: ===
TARGET= wxAppManagerLua.so
WRAPPER= wxAppManager_wrap.cxx
SRCS= $(ROOTSRC)/wxAppManager.cpp $(ROOTSRC)/XMLReader.cpp $(WRAPPER)
INTERFACE=wxAppManager.i
CC= g++
FLAGS=-shared -fPIC -DDEBUG=1
SWIGFLGS= -lua -c++ -includeall -v
RM=rm -rfv
all:$(WRAPPER)
$(TARGET) : $(SRCS)
$(CC) $(FLAGS) -o $(TARGET) $(SRCS) $(EXTRAINC) $(WXCONFIGFLGS)
$(WRAPPER):
swig $(SWIGFLGS) -I/usr/include $(EXTRAINC) $(INTERFACE)
clean:
$(RM) *.so* $(WRAPPER)
~
...
===== je produis mon soi comme ceci: -
g++ -g -shared -fPIC -o wxAppManagerLua.so ./wxAppManager_wrap.cxx ./wxAppManager/src/XMLReader.cpp ./wxAppManager/src/wxAppManager.cpp -I./ -I./wxAppManager/inc/ -I/usr/local/lib/wx/include/gtk2-ansi-debug-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXGTK__ -pthread -L/usr/local/lib -pthread -lwx_gtk2d_richtext-2.8 -lwx_gtk2d_aui-2.8 -lwx_gtk2d_xrc-2.8 -lwx_gtk2d_qa-2.8 -lwx_gtk2d_html-2.8 -lwx_gtk2d_adv-2.8 -lwx_gtk2d_core-2.8 -lwx_based_xml-2.8 -lwx_based_net-2.8 -lwx_based-2.8
=====
J'écris mon fichier lua comme ceci:
function CreateServer()
-- Create the address - defaults to localhost:0 initially
local addr = wxAppManagerLua.IPV4addressLua()
if addr ~= nil then
print(" Calling Bind Port ")
addr:SetService(3000)
end
port = addr:GetService()
print(" Binded to Port "..port)
-- Create the socket
SockAddr = wx.wxSockAddress
--CODE FAILS HERE
SOCKSERVER = wx.wxSocketServer(addr)
.... ....
...
Mon code échoue à la dernière ligne disant ..
SockTestAppMgr.wx.lua:584: wxLua: Expected a 'wxSockAddress' for parameter 1, but got a 'userdata'. Function called: 'wxSocketServer(userdata)' 01. wxSocketServer::wxSocketServer([wxSockAddress, integer]) stack traceback: [C]: in function 'wxSocketServer' SockTestAppMgr.wx.lua:584: in function 'CreateServer' SockTestAppMgr.wx.lua:682: in function 'main' SockTestAppMgr.wx.lua:694: in main chunk
===== Veuillez noter ... wxSockAddess est la classe de base de wxIPV4address à partir de laquelle j'ai dérivé ma classe.
Vérifiez dans ce lien http://docs.wxwidgets.org/trunk/classwx_i_paddress.html
Quelqu'un peut-il aider?
Mon diagnostic est le suivant: -
Le problème fondamental est Chaque fois que je fais sos ... en utilisant SWIG et essayer de se référer des fonctions ou des classes de Lua .... cela fonctionne bien jusqu'à ce que quand je parle une classe wxWidget ou de la fonction ... même deux de mes sos sont en mesure de se référer aux classes à travers sos ... mais pas avec les classes wxwidgets ... bien que .... si je continue à référencer une classe de wx.so à tout Autre classe de wx.so cela fonctionne ...
Veuillez me faire savoir ce qui empêche lua de comprendre le type de ma classe à n'importe quelle classe de wxwidgets.
Je sais que les liaisons de wxwidgets ont été générées par des méthodes traditionnelles et non par SWIG .. est-ce que cela pose problème?