我有一个C++ API,它被构建到一个DLL中,现在我想通过Python来访问API,所以我决定重新构建DLL。boost.python,但我是新手boost.python. 在
API在文件CMyApi.h中,它有如下工厂方法:
class __declspec(dllexport) CMyApi
{
public:
static CMyApi* CreateUserApi(const char *path = "");
virtual void Init() = 0;
protected:
~CMyApi(){};
};
CMyApi是一个虚拟类,CApiImpl继承了CMyApi,它在CApiImpl.h中定义:
^{pr2}$CApiImpl.cpp文件包含CApiImpl的实现和CMyApi::CreateUserApi的实现:
static CMyApi* CMyApi::CreateUserApi(const char *path)
{
return new CApiImpl();
}
我不想向api用户公开CApiImpl,我希望api由CMyApi调用,所以用户拥有的是CMyApi.h和一个DLL文件。在
CMyApi是这样包装的:
class CMyApiWrapper : public CMyApi, public wrapper<CMApi>
{
void Init()
{
this->get_override("Init")();
}
};
BOOST_PYTHON_MODULE(CMyApiWrapper)
{
class_<CMyApiWrapper>("CMyApiWrapper")
.def("CreateUserApi", &CMyApi::CreateUserApi)
.staticmethod("CreateUserApi")
.def("Init", pure_virtual(&CMyApi::Init));
}
我的PYTHON模块不能在上面构建错误的程序?在
目前没有回答
相关问题 更多 >
编程相关推荐