我使用Lua和两个C库,其中一个使用SWIG,另一个是手动包装。
手动包装的库是Freetype的接口;它在C中创建FT_Face
指针,它作为lightuserdata返回。
现在我需要将此FT_Face
作为参数传递给SWIG包装的其中一个函数。但是,SWIG当然不会将普通的userdata作为参数,但是希望每个C指针都是由SWIG创建的 - 即使我有一个FT_Face
指针,SWIG希望看到SWIGTYPE_p_FT_Face
,这是{ {1}}下面。
有没有办法将Lua userdata变成swig_lua_userdata
?我如何让SWIG认识到'我的swig_lua_userdata
userdata作为函数的有效参数?
答案 0 :(得分:0)
答案似乎是" typemaps":
%typemap(in) FT_Face {
$1 = (FT_Face)lua_touserdata(L,$input);
}
%typemap(typecheck) FT_Face = void*;