You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++使用Boost Python模块编译报undefined reference to `_Py_Dealloc`求助

问题原因

你遇到的所有未定义引用报错都来自Python C API的核心符号,本质是链接阶段没有链接Python 3.8对应的标准库,boost.python本身依赖Python的核心库,只链接boost_python38是不够的。

解决步骤

1. 确认Python库文件存在

先执行以下命令验证系统中Python 3.8的动态库是否存在:

ls /usr/lib/x86_64-linux-gnu/libpython3.8.so

如果输出正常说明库文件存在,直接进行下一步。如果找不到,可以先安装Python 3.8的开发包:

sudo apt install python3.8-dev

2. 修改链接参数

在原有的链接参数末尾添加-lpython3.8即可,完整的链接命令参考:

g++ -L/usr/lib/x86_64-linux-gnu/ -o bin/Debug/PyOPI obj/Debug/bark.o obj/Debug/main.o  -lboost_program_options -lboost_system -lboost_python38 -lpython3.8

3. Code::Blocks可视化配置方法

如果不想手动改编译命令,可以直接在IDE中配置:

  • 打开对应项目,点击菜单栏Project -> Build options
  • 选择你当前使用的构建配置(Debug/Release或者全局项目配置)
  • 切换到Linker settings标签页
  • 在Link libraries列表中添加python3.8,也可以直接选择完整路径/usr/lib/x86_64-linux-gnu/libpython3.8.so
  • 保存配置后重新构建项目即可

额外注意事项

你当前的编译参数里同时包含了自己下载的Boost 1.77.0的头文件路径,和系统apt安装的Boost库链接路径,要注意两者版本匹配问题:如果头文件版本和链接的boost_python库版本不一致,也可能引发其他兼容性报错,建议统一使用同一套Boost版本。

内容的提问来源于stack exchange,提问作者Roberto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:45:09