使用Lua中的Lua表来操作,如何从C结构中访问一个字节数组。

我想从 Lua 中访问 C 结构体中的数组,希望能够将其作为字节数组访问。我知道我必须使用 typemaps,但是我无法使它像我想要的那样工作。

该结构体在命名空间中定义,如果需要的话,For this example我称之为 headerfile send.h

namespace foo{
namespace bar{

typedef struct
{
    ...
    unsigned char data[8];
} message;

}};

因此,我想能够从 Lua 中访问 C 结构体中的 unsigned char 数据数组。我希望像使用数字的表格那样访问它。这里是我想要使用的 Lua 脚本代码。

modul = require("MyModule")
msg = modul.message()

msg.data[1] = 0x3b

print(msg.data[1])

我得到的所有内容都是类似于“尝试索引字段”data”(一个userdata值)”的错误。我做了一些研究,并发现我必须添加一些类似%typemap 的魔术才能处理它。但我无法确定具体操作步骤。

因此,这里是我的一些问题:

  • 有人能给我一个工作正常的场景例子吗?
  • 我应该应用哪种类型映射?
  • 我如何仅将此类型映射应用于此结构,而不应用于其他结构?
点赞
用户4116659
用户4116659

所以,最后我通过使用以下类型映射简单地访问了数据成员,希望这能帮助其他人。

typemap(out) unsigned char foo :: bar :: message :: data [8]
{
    int i;
    int32_t _size = 8;

    lua_newtable(L);
    for(i = 0; i <_size; i ++)
    {
        lua_pushnumber(L,(lua_Number)$1 [i]);
        lua_rawseti(L,-2,i + 1);
    }

    SWIG_arg ++;
}

%include“send.h”
%{
#include“send.h”
%}
2014-10-14 09:35:57