2010-04-02 73 views
0

构建我有以下功能的函数:wrapp其参数超出类型的指针使用痛饮

typedef struct tagT{ 
int a ; 
int b ; 
}Point; 

int lib_a_f_5(Point *out_t) 
{ 

out_t->a = 20; 
out_t->b = 30; 

return 0; 
} 

我应该如何引导痛饮生成的红宝石(或LUA)正确的代码? 把下面的语句接口文件时间:

%apply SWIGTYPE Point* {Point *out_t}; 

我得到了一个警告:

liba.i:7: Warning(453): Can't apply (Point *OUTPUT). No typemaps are defined. 

难道我需要写一个类型映射?我应该怎么做?

回答

1

在接口文件中不应该采取特殊行动。 SWIG可以照顾它。

Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> require 'mylib_swig' 
> t=mylib_swig.Point() 
> print(t.a) 
0 
> print(t.b) 
0 
> mylib_swig.lib_a_f_5(t) 
in lib_a_f_5 
> print(t.a) 
20 
> print(t.b) 
30 
>