SWIG是一个工具,它允许将C和C++代码转换为多个脚本语言,包括Lua。在SWIG中传递数组可能有点棘手,因为Lua不能直接处理数组。幸运的是,SWIG提供了一种方法可以轻松地将数组从C++代码传递到Lua脚本中。首先,您需要在SWIG接口文件中定义一个类型,该类型用于表示数组。要传递数组,您需要在翻译器中创建一个SWIG类型,并使用它将数组从C++代码传递到Lua脚本。
2009-2-17 16:1:54
收藏:0
阅读:416
评论:2
我目前有下面这个 Lua 代码:
g = engine.CGeometry()
vertexes = {}
vertexes[1] = 0
vertexes[2] = 0
vertexes[3] = 0
vertexes[4] = 0
vertexes[5] = -1
vertexes[6] = 0
vertexes[7] = -1
vertexes[8] = 0
vertexes[9] = 0
print "adding vertexes"
g:SetVertexes(vertexes)
其中 g:SetVertexes() 在 C++ 中实现为:
void CGeometry::SetVertexes(double* vertexes){
this->vertexes = vertexes;
}
导致了这个错误:
adding vertexes
PANIC: unprotected error in call to Lua API (Error in SetVertexes (arg 2), expected 'double *' got 'table')
Press any key to continue . . .
有什么想法吗?
原文链接 https://stackoverflow.com/questions/557523
点赞
stackoverflow用户1752495
你可以使用 carrays.i 模块,如此描述在这里: http://www.swig.org/Doc1.3/Library.html
例如你有以下 C++ 函数:
void fun(double arr[]) { }
那么你可以在 .i 文件中加载模块:
%include "carrays.i"
%array_functions(double, doubleArray);
void fun(double arr[]);
在 Lua 脚本中使用:
a = new_doubleArray(10) # 创建一个数组
doubleArray_setitem(a,0,5.0) # 将值5.0设置在索引0上
fun(a) # 传递给C
delete_doubleArray(a) # 销毁数组
2017-12-15 12:53:04
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
在接口定义中尝试写入:
void CGeometry::SetVertexes(double vertexes[]);
根据文档,SWIG区分指针和数组。