Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Visual Studio 2015构建PJSUA2(swig)_Python_Sip_Voip_Pjsua2 - Fatal编程技术网

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

Python 如何使用Visual Studio 2015构建PJSUA2(swig),python,sip,voip,pjsua2,Python,Sip,Voip,Pjsua2,我尝试为Python编译PJSUA2。我可以用Visual Studio 2015社区版编译源代码 我的问题是,现在如何安装Python模块 指南建议使用make和make-install。我还试图安装minwg,但由于项目是用VS编译的,所以它不起作用 我也尝试过使用minwg进行编译,但由于未定义的需求,我从未成功过。此外,PJSUA官方指南还建议使用VS for Windows 以下设置已应用于从源生成: Swig位置已添加到路径 已添加JAVA_home系统变量 Java位置已添加到路

我尝试为Python编译PJSUA2。我可以用Visual Studio 2015社区版编译源代码

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

指南建议使用make和make-install。我还试图安装minwg,但由于项目是用VS编译的,所以它不起作用

我也尝试过使用minwg进行编译,但由于未定义的需求,我从未成功过。此外,PJSUA官方指南还建议使用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_comp
  • 将swig_java_pjsua2设置为build
  • 将以下文件夹添加到swig_java_pjsua2 VC++包含目录
    • c:\ProgramFiles\Java\jdk-11.0.2\include
    • c:\Program Files\Java\jdk-11.0.2\include\win32
  • 构建解决方案

我可以找到一个变通方法,为Python 3.7编译pjsua2。如果您对此解决方案有更好的解决方案或建议,请告诉我

先决条件:

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

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

    %inline %{
    pj_ssize_t new_pj_ssize_t(int s) {
       return (pj_ssize_t) s;
    }
    %}
    
    这个额外的内联swig函数为createrecorder提供了解决方法

  • 打开命令行(powershell对此不起作用)
  • 转到pjsip应用程序/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
    
  • 使用swig_python_pjsua2名称向解决方案添加新的“空项目”(Visual C++)

  • 添加libpjproject和pjsua2_lib作为此新项目的参考
  • 右键单击标题文件>添加>现有项
  • 添加pjsip应用程序\src\swig\pjsua2\u wrapp.h
  • 将名为“生成的代码”的“新过滤器”添加到项目中
  • 右键单击“生成的代码”并添加新的现有项
  • 添加pjsip应用程序\src\swig\pjsua2\u wrapp.cxx
  • 右键单击项目和链接器>输入
  • 将“Ws2_32.Lib”添加到“其他依赖项”
  • 转到“VC++目录”
  • 添加以下文件夹以包含路径(我使用了完整路径!):
    • c:\python37\include
    • pjnath\include
    • pjsip\include
    • pjmedia\include
    • pjlib util\include
    • pjlib\include
  • 将以下文件夹添加到库目录:
    • C:\Python36\libs
  • 一般情况下:
    • 目标名称:$(项目名称)
    • 目标扩展名:.pyd
    • 配置类型:动态库(.dll)
  • 转到解决方案的属性,选择swig_python_pjsua2进行构建
  • 右键单击swig_python_pjsua2并构建
  • 构建应成功完成
  • 您需要在python中使用pjsua2库
  • pjsua.py位于pjsip apps/src/swig/python下
  • x64/Release/_swig_python_pjsua2.pyd(将其重命名为_pjsua2.pyd)
  • 要进行测试,请将这些文件复制到文件夹中,从同一文件夹启动python并键入:
    • 进口pjsua2

非常感谢克里斯做了这项了不起的工作


我刚刚让它在Python 2.7/32位上运行,有些东西略有不同,所以我将在这里添加它们:

环境:
  • 视窗10
  • SWIG 4.0.1
  • PJSIP 2.9
  • Python 2.7.14(32位)
  • Visual Studio Express 2015(版本14.0.25431.01更新3)
干什么
  • 重要提示:检查Python解释器是否真的是x64或win32,如下所示: 启动python会话并输入:

    导入平台

    平台架构()

    如果你有32位,在你选择的目标平台中考虑这与

  • 将此%inline%代码段添加到pjsip apps/src/swig/pjsua2.i时,请将其添加到文件末尾

  • 在启动swig命令时,如果使用Python2.x,请省略“-py3”参数

  • Krisz在“pjsua.py”中的描述有点拼写错误