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

如何在Windows 10上编译生成Python 3.x版PJSUA2包?

解决Windows 10下Python 3.x版PJSUA2模块构建失败问题

在Windows 10系统中,已成功编译PJSIP的C++源码,但构建Python版PJSUA2模块时遇到以下问题:

  • 在./pjsip-apps/src/swig目录执行make,报错找不到../../../build.mak
  • 在./pjsip-apps/src/swig/python目录执行make,出现sed命令错误、找不到/build/common.mak,以及编译时无法找到pjsua2.hpp头文件的问题

核心原因分析

  1. 构建路径错误:PJSIP的Makefile依赖根目录生成的构建配置文件,直接在子目录执行make会导致路径引用失效。
  2. Windows shell环境不兼容:默认的Windows命令提示符或PowerShell对sed等Unix工具支持不佳,导致SWIG包装代码生成失败。
  3. 头文件路径未正确关联:编译Python扩展时,未正确指定PJSIP头文件的搜索路径,导致找不到pjsua2.hpp。

分步解决方案

1. 确认前置环境与基础编译完成

  • 安装SWIG 4.x版本(需与PJSIP源码版本兼容,将其添加到系统PATH)
  • 确保MinGW环境配置正确,且与编译PJSIP C++代码时使用的工具链一致
  • 已在PJSIP根目录完成C++代码编译(执行过configure和make,根目录下生成build.mak等配置文件)

2. 使用正确的构建流程

不要直接在子目录执行make,需从PJSIP根目录触发SWIG模块构建:

  1. 打开MinGW终端(而非Windows默认命令行),切换到PJSIP根目录
  2. 执行以下命令生成Python版PJSUA2的SWIG包装文件:
    make pjsua2-python
    
    该命令会自动处理路径依赖,生成所需的pjsua2_wrap.cpp及相关配置

3. 手动修复构建路径(若上述命令失败)

如果make pjsua2-python执行失败,可手动指定头文件路径构建:

  1. 切换到./pjsip-apps/src/swig/python目录
  2. 修改setup.py,在include_dirs中添加PJSIP的头文件路径:
    include_dirs = [
        '../../../../pjlib/include',
        '../../../../pjlib-util/include',
        '../../../../pjmedia/include',
        '../../../../pjsip/include',
        '../../../../pjsip-apps/include',
        # 补充你的Python头文件路径,例如C:/Python39/include
    ]
    
  3. 执行以下命令手动构建:
    python setup.py build --compiler=mingw32 --include-dirs=../../../../pjlib/include;../../../../pjlib-util/include;../../../../pjmedia/include;../../../../pjsip/include;../../../../pjsip-apps/include
    

4. 解决Windows shell的sed错误

若遇到sed命令相关错误,需确保使用MinGW自带的sed工具:

  • 打开MinGW终端,执行sed --version确认工具可用
  • 全程使用MinGW终端执行构建命令,避免使用Windows命令提示符或PowerShell

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:32:07