使用Boost.Python从Python调用Visual C++类方法失败求助
尝试2参数不匹配问题修复
你未对类进行实例化就直接调用成员方法,hello2.World是类本身,加括号才能生成实例,正确写法:
import hello2 planet = hello2.World() planet.set('howdy') # 执行后会输出howdy print(planet.greet())
尝试1运行库断言失败问题修复
这是编译配置不匹配导致的,按以下步骤调整即可:
- 切换VS项目编译配置为Release模式:你使用的Python是官方Release版本,Debug模式编译的C模块链接的Debug版C运行库和Python依赖的Release版运行库冲突,会触发运行时断言
- 检查运行库配置:打开VS项目属性→C/C++→代码生成→运行库,Release模式下选择
多线程 DLL (/MD),和Boost、Python的运行库保持一致 - 重新编译生成DLL,重命名为hello2.pyd后再导入测试即可正常运行
其他校验点
- 确认Boost.Python编译时使用的是msvc-14.1工具集、32位架构,和你项目配置匹配
- 你的代码中BOOST_PYTHON_MODULE后的模块名和pyd文件名一致,这部分配置无问题
内容的提问来源于stack exchange,提问作者Haim
相关产品推荐
相关产品推荐

