boost::python 을 쓰게 된지도 1년 남짓이 되었습니다.
vc6 -> vc2005 로 바꾼 이후 컴파일 속도가 상대적(-_-)으로 빨라져서 쓰게되었습니다만...
이제 슬슬 인내력의 한계에 다다르게 되었습니다. 와아아아 =ㅁ=)/ 제길슨!
컴파일 속도도 답답하고
확장해서 쓰려고 해도 소스 코드도 개판이라 흑흑 ~(- -)~
그래서 며칠을 고민하던끝에
swig 나 한번 볼까 했는데!
엄청 편하군요 orz;
사용예 보기
inferna.h
#pragma once
#include <windows.h>
#include <string>
class Inferna_SystemHandler
{
public:
virtual ~Inferna_SystemHandler() {}
virtual void OnInit() = 0;
virtual void OnExit() = 0;
};
class TestSystemHandler : public Inferna_SystemHandler
{
public:
TestSystemHandler() : test("kldgjalsdkgj")
{}
virtual ~TestSystemHandler() {}
virtual void OnInit() {}
virtual void OnExit() {}
std::string test;
};
void Inferna_RunApp(Inferna_SystemHandler* systemHandler);
void Inferna_EmbedTool(HWND hWnd, Inferna_SystemHandler* systemHandler);
inferna.i
%module inferna
%{
#include "inferna.h"
%}
%include "../inferna.h"
swig.exe -Wall -c++ -python inferna.i
헤더 파일만 정리 잘해서 연결만 시켜주면 끝이라는 사실이 너무 감동적입니다.
컴파일 속도도 빠른데다가
boost 에 비해서 읽을 수 있는 코드라는 점이 -_-)~
너무 너무 마음에 듭니다.
생성 코드 보기
짜잔~
SWIGINTERN PyObject *_wrap_Inferna_RunApp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
Inferna_SystemHandler *arg1 = (Inferna_SystemHandler *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
if (!PyArg_ParseTuple(args,(char *)"O:Inferna_RunApp",&obj0)) SWIG_fail;
res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Inferna_SystemHandler, 0 | 0 );
if (!SWIG_IsOK(res1)) {
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Inferna_RunApp" "', argument " "1"" of type '" "Inferna_SystemHandler *""'");
}
arg1 = reinterpret_cast< Inferna_SystemHandler * >(argp1);
Inferna_RunApp(arg1);
resultobj = SWIG_Py_Void();
return resultobj;
fail:
return NULL;
}
와하하 ~(-_-)~
shared_ptr 하고 weak_ptr 만 되면 boost::python 은 내다버려야겠어요.

(
0)

(
0)
http://imp17.com/tc/myevan/trackback/115