【发布时间】:2012-01-28 00:00:42
【问题描述】:
在使用 SWIG 和 lua 方面,我是一个绝对的初学者,也是一个平庸的 C++ 开发人员,我似乎不明白如何将 C++ 类与 Lua 绑定。
我的最终目标是拥有一个类的实例,将其传递给我的 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
(刚刚将 %module 生物添加到我的 Creature.h 并将其保存为 bio.i)。我使用 SWIG 运行
swig -c++ -lua creature.i
得到了我的 monster.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。
-
考虑到 Lua 5.2 的接受度,许多人会考虑将其用作 up 级,而不是降级。
-
它可以编译,但现在我得到一个链接器错误:错误 LNK2019:未解析的外部符号 _lua_error 在函数 __wrap_new_Creature 中引用。但是即使我设法编译了它,我以后如何使用它呢?
-
@NicolBolas 我一直没有关注 Lua 开发新闻。 Lua 5.2 不受欢迎吗?我可以在哪里阅读更多相关信息?
-
只是想让你们知道,这确实是 5.2 的问题,降级到 5.1 后我编译没有任何问题。我仍然需要学习如何使用这些工具,但我可能会以某种方式管理。
标签: c++ visual-studio-2010 lua swig