Lua / LuaJIT中的Cast C Struct

时间:2015-02-09 03:25:09

标签: c++ struct lua luajit

我有这个C结构:

typedef struct { double x, y; } point_t;    

我需要向Lua发送一个point_t变量并更改其值,然后将其返回给C. 我遇到的第一个问题是在Lua中施放它。怎么办呢?

的main.c

point_t ponto;

ponto.x = 0; ponto.y = 0;

lua_getglobal(L, "jit"); //Get variavel with function
lua_pushlightuserdata(L, &ponto);
lua_pcall(L, 1, 1, 0);

point_t *pontop = (point_t*)lua_touserdata(L, -1);

test.lua

 jit = function(num)
    local ffi = require("ffi")
    ffi.cdef[[
    typedef struct { double x, y; } point_t;
    ]]

    local point
    local mt = {}
    point = ffi.metatype("point_t", mt)

    local a = point(3, 4)
    print(a.x, a.y)
    b = ffi.cast("point_t*",num)
    b.x = 10
    b.y = 20
    return b
end

本地变量a是使用point_t类型创建的,如何将b转换为像a一样使用它?

0 个答案:

没有答案