1
我使用SWIG生成C++ < - > Lua包裝工作項目。 我的主要問題是,在這個基地項目中,每個平臺都有類型定義。例如。對於Win32,存在標題Win32Types.h,其中諸如SWIG生成的Lua <--> C++包裝處理不當的原始類型typedef更名
typedef char Char;
typedef char TChar;
typedef signed int Int;
typedef unsigned int UInt;
typedef signed char Int8;
typedef unsigned char UInt8;
...
被定義。 問題是現在,隨着像
class Named
{
public:
Named();
virtual ~Named();
void setName(const Char *name);
const Char* GetName() const;
}
的示例類中,setName
- 在痛飲的包裝器生成的方法看起來是這樣的:
static int _wrap_Named_SetName(lua_State* L) {
int SWIG_arg = 0;
Named *arg1 = (Named *) 0 ;
Char *arg2 = (Char *) 0 ;
SWIG_check_num_args("Named::SetName",2,2)
if(!SWIG_isptrtype(L,1))
SWIG_fail_arg("Named::SetName",1,"Named *");
if(!SWIG_isptrtype(L,2))
SWIG_fail_arg("Named::SetName",2,"Char const *");
if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Named,0))){
SWIG_fail_ptr("Named_SetName",1,SWIGTYPE_p_Named);
}
if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&arg2,SWIGTYPE_p_Char,0))){
SWIG_fail_ptr("Named_SetName",2,SWIGTYPE_p_Char);
}
...
}
這裏的問題是,包裝試圖將Char視爲另一個類指針,儘管它只是重命名爲Char的char指針。 有什麼辦法來規避這種行爲?
我試着寫一個類型映射像
%typemap(in) Char {
$1 = lua_tostring($input);
}
,但林不知道我這樣做是正確的方式...
所適用的罰款! – 2011-12-29 09:40:05