我是一個絕對的初學者,當涉及到同時使用SWIG和lua,以及一個平庸的C++開發人員,我似乎並不瞭解我如何可以用Lua綁定C++類。包裝C++類使用它在Lua使用SWIG - 需要簡單的例子
我的最終目標是創建一個類的實例,並將其傳遞給我的lua腳本,該腳本以某種方式操作該對象,然後使用C++檢索該對象並執行我想要的任何操作。
所以...我已經下載了Lua和C++,編譯了幾個例子,我可以在我的C++程序中運行一些lua腳本。到現在爲止還挺好。
現在,我已經下載了SWIG。我在Windows 7上使用VC2010。根據我的理解,我想創建一個接口文件。所以,我創建了一個,example.i:
%module creature
class Creature
{
public:
Creature(void);
Creature(int id);
~Creature(void);
(...) the rest of my class here
(只需添加%模塊的動物我Creature.h並將其保存爲creature.i)。我跑SWIG使用
swig -c++ -lua creature.i
並得到我的creature.cxx文件。
現在,我可能會讓自己難堪,但是......我不知道下一步該怎麼做。我想以某種方式建立輸出文件?我現在怎麼使用它?我在這裏讀到http://www.swig.org/Doc1.3/Lua.html,我需要將生成的文件(* .cxx)與其餘的代碼鏈接起來(所以我只需將該文件包含在我的項目中並添加#include「Creature.h」行) 。但是,當我編譯我得到這樣的錯誤
error C2065: 'LUA_GLOBALSINDEX' : undeclared identifier
error C2036: 'const luaL_reg *' : unknown size
我也嘗試使用MinGW的編譯它,但我得到了同樣的問題。如果有人能夠向我展示一個示例或一步一步的教程,說明如何將這些工具一起使用,那將會很棒,因爲我很難理解整個想法。這絕對是由於我對如何使用它的基礎知識缺乏瞭解,所以請小心點一下。
任何幫助將不勝感激。
在Lua發行版中搜索缺少的標識符告訴我它已在5.2版中被刪除 - 可能SWIG沒有更新以使用它。嘗試將您的Lua降級到5.1。 – millimoose 2012-01-28 00:06:49
考慮到接受Lua 5.2,許多人會考慮使用它*升級,而不是降級。 – 2012-01-28 00:15:42
它編譯,但現在我得到一個鏈接器錯誤:錯誤LNK2019:無法解析的外部符號_lua_error函數__wrap_new_Creature中引用。但即使在我設法編譯它之後,我怎麼才能使用它呢? – MMM 2012-01-28 00:17:53