如何使用Visual Studio 2015构建PJSUA2(swig)

2024-10-02 08:16:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试为Python编译PJSUA2。我可以用visualstudio2015社区版编译源代码。在

我的问题是,现在如何安装Python模块?在

使用指南和建议。我也尝试安装minwg,但它没有工作,因为项目是用VS编译的

I have also tried to compile with minwg, but I never could succeed due to undefined requirements. Also official PJSUA guide recommend to use VS for Windows.

以下设置已应用于从源生成:

  • Swig位置已添加到路径
  • 已添加JAVA_home系统变量
  • Java位置已添加到路径
  • 已创建空的pjlib/include/pj/config_site.h
  • VS 2015社区开源(所有建议的VS包和模块都已安装)
  • 将以下项目设置为不编译:
    • pjsua_cli_uwp_comp公司
    • pjsua_cli_wp8号
    • pjsua_cli_wp8_组件
  • 将swig_java_pjsua2设置为build。在
  • 将以下文件夹添加到swig_java_pjsua2 VC++include目录
    • c: \Program Files\Java\jdk-11.0.2\include
    • c: \Program Files\Java\jdk-11.0.2\include\win32
  • 生成解决方案

Tags: 模块to项目路径cliincludejava社区
2条回答

非常感谢你的出色工作!在


我刚刚为Python 2.7/32bit工作,有些东西略有不同,所以我将在这里添加它们:

环境:

  • Windows 10
  • 瑞士法郎4.0.1
  • PJSIP 2.9版
  • Python 2.7.14(32位)
  • Visual Studio速成版2015(V 14.0.25431.01更新3)

做什么:

  1. 重要提示:检查Python解释器是否真的是x64或win32,如下所示: 启动python会话并输入:

    import platform

    platform.architecture()

    如果您有32位,请在选择VS.中的目标平台时考虑这一点。

  2. 当您将这个%inline%%代码段添加到pjsip apps/src/swig/pjsua2.i中时,请在文件末尾添加

  3. 启动swig命令时,如果使用python2.x,则省略“-py3”参数

  4. 克丽丝的描述有点错误,在“pjsua.py位于pjsip apps/src/swig/python下“->;当然是pjsua2.py的意思。不要使用pjsua.py.

最后将_pjsua2.lib和pjsua2.py复制到\lib\site packages\中,并将_pjsua2.pyd复制到\DLLs\中,使它们在任何地方都可用。在

我可以为python3.7编译pjsua2。如果你有更好的解决方案或建议,让我知道

先决条件:

  • 列表项
  • 下载并提取swig(swigwin 4.0.0)
  • 下载并安装JDK
  • 下载并安装Python(Python 3.7.3 x64)并设置为自定义安装:
    • 勾选“将Python添加到环境变量”
    • 勾选“预编译标准库”
    • 勾选“下载调试符号”
    • 勾选“下载调试二进制文件(需要VS 2015或更高版本)”
    • 如果需要,请设置自定义路径
    • 将swigwin位置添加到系统路径
    • 将Python位置添加到系统路径
    • 添加JAVA_HOME系统变量
    • 将%JAVA_HOME%\bin添加到系统路径
    • 安装Visual Studio 2015社区版

步骤:

  • 下载并解压缩pjsip2.8
  • 在pjlib/inlclude/pj/folder下创建空的config_site.h
  • 在VS中打开pjproject-vs14.sln
  • 将出现不受支持的警告窗口,请按“确定”
  • 在“Install Missing Features”(安装缺少的功能)窗口中,按Install
  • 将启动VS安装程序,必须关闭VS才能完成安装。在
  • 我还在安装中添加了“Windows10SDK(10.0.10586)”。在
  • 我也在我的Windows10上启用了开发人员模式,但这可能是可选的
  • 在VS中再次打开项目
  • 将project设置为Release,并在顶部下拉列表中设置x64
  • 右键单击解决方案,然后转到“配置属性”>;“配置”
  • 从选择中删除所有与uwp和wp8相关的项目,如pjsua_cli_uwp_comp、pjsua_cli_wp8_comp
  • 按“确定”,然后生成解决方案
  • 在构建之后,我有34个成功的解决方案,0个失败的解决方案。在
  • 将以下行添加到pjsipapps/src/swig文件夹中的pjsua2.i

    %inline %{
    pj_ssize_t new_pj_ssize_t(int s) {
       return (pj_ssize_t) s;
    }
    %}
    

    this extra inline swig function provides workaround for create recorder issue

  • 打开命令行(powershell对此不起作用)
  • 转到pjsip apps/src/swig/python
  • 执行以下命令:

    swig -I../../../../pjlib/include -I../../../../pjlib-util/include -I../../../../pjmedia/include -I../../../../pjsip/include -I../../../../pjnath/include -py3 -c++  -python -threads ../pjsua2.i
    
  • >P>添加新的“空项目”(Visual C++)以SigigpPython PJSUA2名称

    求解
  • 添加libpjproject和pjsua2_lib作为这个新项目的引用
  • 右键单击“头文件”>;“添加”>;“现有项目…”。。。在
  • 添加pjsip apps\src\swig\pjsua2_wrapp.h
  • 在项目中添加一个名为“Generated Code”的“new filter”
  • 右键单击“生成代码”并添加新的现有项。在
  • 添加pjsip apps\src\swig\pjsua2_cxwrapp在
  • 右键单击项目和链接器>输入
  • 将“Ws2_32.Lib”添加到“Additional Dependencies”
  • 转到“VC++目录”
  • 添加以下文件夹以包含路径(我已使用完整路径!):
    • c: \python37\包括
    • pjnath\包含
    • pjsip\包含
    • pjmedia\包括
    • pjlib util\include
    • pjlib\包括
  • 将以下文件夹添加到库目录:
    • C: \Python36\libs
  • 一般设置:
    • 目标名称:$(项目名称)
    • 目标扩展:.pyd
    • 配置类型:动态库(.dll)
  • 转到解决方案的属性,并选择swig_python_pjsua2来构建
  • 右键单击swig_python_pjsua2并构建
  • 生成应成功完成
  • 你需要在python文件库中使用jsp2。在
  • 在pjsua.py位于pjsip apps/src/swig/python下
  • x64/Release/_swig_python_pjsua2.pyd(将其重命名为_pjsua2.pyd)
  • 要进行测试,请将这些文件复制到文件夹中,从同一文件夹启动python并键入:
    • 导入pjsua2

相关问题 更多 >

    热门问题