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

Visual Studio 2022使用Boost.Python无法生成可导入Python的DLL

Boost.Python扩展模块无法生成dll的问题解决

问题根源

你的代码同时包含了main()函数和Boost.Python模块定义,导致编译器生成控制台可执行文件(.exe),而非Python可导入的动态链接库(.dll)。另外,项目输出类型的配置也可能未正确设置。

具体修复步骤

1. 修改项目输出类型

在Visual Studio中操作:

  • 右键项目 → 属性 → 配置属性 → 常规 → 项目默认值 → 配置类型,切换为动态库(.dll)。
  • 确认平台(如x64)与Boost、Python的版本位数一致。

2. 删除多余的main函数

Boost.Python扩展模块不需要自定义main函数,框架会自动处理入口。移除代码中的以下片段:

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " ");
}

3. 验证编译配置

  • 确保Boost的头文件和库目录已正确配置(你已按官方文档完成,此步可跳过)。
  • 若使用静态Boost库,保留BOOST_PYTHON_STATIC_LIB定义;若用动态库,可删除该定义,链接对应版本的动态Boost.Python库(如boost_python310-vc143-mt-gd-x64-1_85.lib)。

4. 重新编译并使用

编译后,输出目录会生成hello_ext.dll,将其重命名为hello_ext.pyd(Python扩展的标准后缀),即可在Python中导入:

import hello_ext
print(hello_ext.greet())

额外提示

  • 保证Python版本与编译Boost时使用的版本完全匹配(如均为3.10 x64),避免版本不兼容。
  • 若生成的dll名称不符,检查BOOST_PYTHON_MODULE(hello_ext)中的名称是否与项目输出文件名一致,或查看链接器的模块定义文件配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:43:22