1
SWIGを使用して、作業プロジェクトのC++ < - > Luaラッパーを生成しました。 私の主な問題は、ベースのこのプロジェクトでは、各プラットフォームの型定義が存在することです。例えば。 Win32の場合、Win32Types.hというヘッダがあります。SWIGで生成されたLua <--> C++ Wrapperの誤った取り扱いの原始型がtypedefで名前が変更されました
typedef char Char;
typedef char TChar;
typedef signed int Int;
typedef unsigned int UInt;
typedef signed char Int8;
typedef unsigned char UInt8;
...
が定義されています。ここ
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);
}
...
}
問題は、ラッパーがしようとします: - 問題が
class Named
{
public:
Named();
virtual ~Named();
void setName(const Char *name);
const Char* GetName() const;
}
のような例のクラスで、今、setName
SWIGラッパーで生成されたメソッドは次のようになりますCharを別のクラスポインタとして扱いますが、Charポインタの名前はCharに変更されています。 この動作を回避する方法はありますか?
あなたがこれを行うことができる2つの簡単な方法があります...
%を使用して加工した罰金を適用します! –