Python 如何使用Visual Studio 2015构建PJSUA2(swig)
我尝试为Python编译PJSUA2。我可以用Visual Studio 2015社区版编译源代码 我的问题是,现在如何安装Python模块 指南建议使用make和make-install。我还试图安装minwg,但由于项目是用VS编译的,所以它不起作用 我也尝试过使用minwg进行编译,但由于未定义的需求,我从未成功过。此外,PJSUA官方指南还建议使用VS for Windows 以下设置已应用于从源生成: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位置已添加到路
- 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
- 构建解决方案
- 列表项
- 下载并解压缩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中添加以下行
这个额外的内联swig函数为createrecorder提供了解决方法%inline %{ pj_ssize_t new_pj_ssize_t(int s) { return (pj_ssize_t) s; } %}
- 打开命令行(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)
如果你有32位,在你选择的目标平台中考虑这与