上海滩强盛哥 上海滩强盛哥
关注数: 22 粉丝数: 23 发帖数: 474 关注贴吧数: 43
VC++封装成python可用的dll,编译时出错,请问是为什么? 按如下文章中的例子,VC++封装成python可用的dll,编译时出错,请问是为什么?(我封装非类非结构体的普通函数,编译成功,python也可调用成功) http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.cppblog.com%2Fjinq0123%2Farchive%2F2008%2F05%2F29%2Fbuildinghybridsystemswithboostpython_c.html&urlrefer=f5a86600bc2bdc8fc3c92a0d1d4fd73b #define BOOST_PYTHON_SOURCE #include "stdafx.h" #include <boost/python/module.hpp> #include <boost/python/def.hpp> #include <boost/python.hpp> using namespace boost::python; struct World { void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; BOOST_PYTHON_MODULE(MakeDll) { class_<World>("World") .def("greet", &World::greet) .def("set", &World::set) ; } 编译报错如下: 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall boost::python::converter::shared_ptr_deleter::shared_ptr_deleter(struct boost::python::converter::shared_ptr_deleter const &)" (__imp_??0shared_ptr_deleter@converter@python@boost@@QAE@ABU0123@@Z),该符号在函数 "public: __thiscall boost::shared_ptr<void>::shared_ptr<void><void,struct boost::python::converter::shared_ptr_deleter>(void *,struct boost::python::converter::shared_ptr_deleter)" (??$?0XUshared_ptr_deleter@converter@python@boost@@@?$shared_ptr@X@boost@@QAE@PAXUshared_ptr_deleter@converter@python@1@@Z) 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void * __cdecl boost::python::objects::find_static_type(void *,struct boost::python::type_info,struct boost::python::type_info)" (__imp_?find_static_type@objects@python@boost@@YAPAXPAXUtype_info@23@1@Z),该符号在函数 "private: virtual void * __thiscall boost::python::objects::value_holder<struct World>::holds(struct boost::python::type_info,bool)" (?holds@?$value_holder@UWorld@@@objects@python@boost@@EAEPAXUtype_info@34@_N@Z) 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall boost::python::objects::class_base::~class_base(void)" (__imp_??1class_base@objects@python@boost@@QAE@XZ),该符号在函数 __unwindfunclet$??0?$class_@UWorld@@Unot_specified@detail@python@boost@@U2345@U2345@@python@boost@@QAE@PBD0@Z$0 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void __cdecl boost::python::objects::register_dynamic_id_aux(struct boost::python::type_info,struct std::pair<void *,struct boost::python::type_info> (__cdecl*)(void *))" (__imp_?register_dynamic_id_aux@objects@python@boost@@YAXUtype_info@23@P6A?AU?$pair@PAXUtype_info@python@boost@@@std@@PAX@Z@Z),该符号在函数 "void __cdecl boost::python::objects::register_dynamic_id<struct World>(struct World *)" (??$register_dynamic_id@UWorld@@@objects@python@boost@@YAXPAUWorld@@@Z) 中被引用 1>D:\VCProject\MakeDLL\Debug\MakeDLL.dll : fatal error LNK1120: 4 个无法解析的外部命令 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
VC++封装成python可用的dll,编译时出错,请问是为什么? 按如下文章中的例子,VC++封装成python可用的dll,编译时出错,请问是为什么?(我封装非类非结构体的普通函数,编译成功,python也可调用成功) http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.cppblog.com%2Fjinq0123%2Farchive%2F2008%2F05%2F29%2Fbuildinghybridsystemswithboostpython_c.html&urlrefer=f5a86600bc2bdc8fc3c92a0d1d4fd73b #define BOOST_PYTHON_SOURCE #include "stdafx.h" #include <boost/python/module.hpp> #include <boost/python/def.hpp> #include <boost/python.hpp> using namespace boost::python; struct World { void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; BOOST_PYTHON_MODULE(MakeDll) { class_<World>("World") .def("greet", &World::greet) .def("set", &World::set) ; } 编译报错如下: 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall boost::python::converter::shared_ptr_deleter::shared_ptr_deleter(struct boost::python::converter::shared_ptr_deleter const &)" (__imp_??0shared_ptr_deleter@converter@python@boost@@QAE@ABU0123@@Z),该符号在函数 "public: __thiscall boost::shared_ptr<void>::shared_ptr<void><void,struct boost::python::converter::shared_ptr_deleter>(void *,struct boost::python::converter::shared_ptr_deleter)" (??$?0XUshared_ptr_deleter@converter@python@boost@@@?$shared_ptr@X@boost@@QAE@PAXUshared_ptr_deleter@converter@python@1@@Z) 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void * __cdecl boost::python::objects::find_static_type(void *,struct boost::python::type_info,struct boost::python::type_info)" (__imp_?find_static_type@objects@python@boost@@YAPAXPAXUtype_info@23@1@Z),该符号在函数 "private: virtual void * __thiscall boost::python::objects::value_holder<struct World>::holds(struct boost::python::type_info,bool)" (?holds@?$value_holder@UWorld@@@objects@python@boost@@EAEPAXUtype_info@34@_N@Z) 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall boost::python::objects::class_base::~class_base(void)" (__imp_??1class_base@objects@python@boost@@QAE@XZ),该符号在函数 __unwindfunclet$??0?$class_@UWorld@@Unot_specified@detail@python@boost@@U2345@U2345@@python@boost@@QAE@PBD0@Z$0 中被引用 1>MakeDLL.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void __cdecl boost::python::objects::register_dynamic_id_aux(struct boost::python::type_info,struct std::pair<void *,struct boost::python::type_info> (__cdecl*)(void *))" (__imp_?register_dynamic_id_aux@objects@python@boost@@YAXUtype_info@23@P6A?AU?$pair@PAXUtype_info@python@boost@@@std@@PAX@Z@Z),该符号在函数 "void __cdecl boost::python::objects::register_dynamic_id<struct World>(struct World *)" (??$register_dynamic_id@UWorld@@@objects@python@boost@@YAXPAUWorld@@@Z) 中被引用 1>D:\VCProject\MakeDLL\Debug\MakeDLL.dll : fatal error LNK1120: 4 个无法解析的外部命令 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
1 下一页