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

时间:2019-02-26 10:01:07

标签: python sip voip pjsua2

我尝试为Python编译PJSUA2。我可以使用Visual Studio 2015 Community Edition来编译源代码。

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

该指南建议使用make和make install。我也尝试安装minwg,但是由于该项目是使用VS编译的,因此无法正常工作。

  

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

2 个答案:

答案 0 :(得分:0)

我可以采取一种变通办法来为Python 3.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社区版

步骤:

  • 下载并解压缩pjsip 2.8
  • 在pjlib / inlclude / pj /文件夹下创建一个空的config_site.h
  • 在VS中打开pjproject-vs14.sln
  • 将出现一个不受支持的警告窗口,请按OK(确定)
  • 在“安装缺少的功能”窗口中,按安装
  • VS安装程序将启动,并且必须关闭VS才能完成安装。
  • 我还向安装中添加了“ Windows 10 SDK(10.0.10586)”。
  • 我还在Windows 10上启用了开发人员模式,但这可能是可选的
  • 在VS中再次打开项目
  • 将项目设置为Release并在顶部下拉菜单中将x64设置为
  • 右键单击解决方案,然后转到“配置属性”>“配置”
  • 从选择中删除所有与uwp和wp8相关的项目,例如pjsua_cli_uwp_comp,pjsua_cli_wp8_comp
  • 按OK,然后构建解决方案
  • 构建后,我有34个成功解决方案,而0个失败解决方案。
  • 打开命令行(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
    
  • 使用swig_python_pjsua2名称将新的“空项目”(Visual C ++)添加到解决方案中

  • 添加libpjproject和pjsua2_lib作为对此新项目的引用
  • 右键单击头文件>添加>现有项...
  • 添加pjsip-apps \ src \ swig \ pjsua2_wrapp.h
  • 将名为“ Generated Code”的新过滤器添加到项目中
  • 右键单击“生成的代码”,然后添加新的现有项目。
  • 添加pjsip-apps \ src \ swig \ pjsua2_wrapp.cxx
  • 右键单击项目,然后单击Linker> Input
  • 将“ Ws2_32.Lib”添加到“其他依赖项”
  • 转到“ VC ++目录”
  • 添加以下文件夹以包含路径(我已使用完整路径!):
    • c:\ python37 \ include
    • pjnath \ include
    • pjsip \ include
    • pjmedia \ include
    • pjlib-util \ include
    • pjlib \ include
  • 将以下文件夹添加到库目录:
    • C:\ Python36 \ libs
  • 设置为常规:
    • 目标名称:_ $(ProjectName)
    • 目标扩展名:.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

答案 1 :(得分:-1)

非常感谢Krisz所做的出色工作!


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

环境:

  • Windows 10
  • SWIG 4.0.1
  • PJSIP 2.9
  • Python 2.7.14(32位)
  • Visual Studio Express 2015(V 14.0.25431.01更新3)

瓦达多:

  1. 重要提示:检查您的Python解释器是真的x64还是win32,如下所示: 开始python会话并输入:

    导入平台

    platform.architecture()

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

  2. 当将此%inline%-Snippet添加到pjsip-apps / src / swig / pjsua2.i时,请将其添加到文件末尾!

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

  4. Krisz的描述中有一个小错字,位于“位于pjsip-apps / src / swig / python下的pjsua.py”->当然是pjsua2.py的意思。不要使用pjsua.py。

最终将_pjsua2.lib和pjsua2.py复制到\ Lib \ site-packages \中,并将_pjsua2.pyd复制到\ DLLs \中,以使它们随处可用。