如何使用 Visual Studio 2015 构建 PJSUA2 (swig)
How to build PJSUA2 (swig) with Visual Studio 2015
我尝试为 Python 编译 PJSUA2。我可以设法用 Visual Studio 2015 社区版编译源代码。
我的问题是,现在如何安装 Python 模块?
指南建议使用 make 和 make install。我也尝试安装 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_comp
- 设置 swig_java_pjsua2 构建。
- 将以下文件夹添加到 swig_java_pjsua2 VC++ 包含目录
- c:\程序Files\Java\jdk-11.0.2\include
- c:\程序Files\Java\jdk-11.0.2\include\win32
- 构建解决方案
我可以做一个变通方法来为 Python 3.7 编译 pjsua2。如果您有更好的解决方案或对此解决方法的建议,请告诉我
先决条件:
- 列表项
- 下载并解压 swig (swigwin 4.0.0)
- 下载并安装JDK
- 下载并安装 Python (Python 3.7.3 x64) 并在自定义安装时设置:
- 打勾"Add Python to environment variables"
- 打勾"Precompile standard library"
- 打勾"Download debugging symbols"
- 打勾"Download debug binaries (requires VS 2015 or later)"
- 根据需要设置自定义路径
- 将 swigwin 位置添加到系统路径
- 将Python位置添加到系统路径
- 添加JAVA_HOME系统变量
- 添加 %JAVA_HOME%\bin 到系统路径
- 安装 Visual Studio 2015 社区版
步骤:
- 下载并解压 pjsip 2.8
- 在 pjlib/inlclude/pj/ 文件夹下创建空 config_site.h
- 在VS
中打开pjproject-vs14.sln
- 会有不支持的警告window,按确定
- 在 "Install Missing Features" windows,按安装
- VS 安装程序将启动,必须关闭 VS 才能完成安装。
- 我在安装中也添加了"Windows 10 SDK (10.0.10586)"。
- 我还在 Windows 10 上启用了开发者模式,但这可能是可选的
- 在 VS 中再次打开项目
- 在顶部下拉列表中将项目设置为 Release 和 x64
- 右键单击解决方案,然后转到“配置属性”>“配置”
- 从 selection 中删除所有与 uwp 和 wp8 相关的项目,例如 pjsua_cli_uwp_comp、pjsua_cli_wp8_comp
- 按确定,然后构建解决方案
- 构建后我有 34 个成功,0 个失败的解决方案。
将以下行添加到 pjsip-apps/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
将新的 "Empty Project" (Visual C++) 添加到名称为 swig_python_pjsua2 的解决方案
- 添加 libpjproject 和 pjsua2_lib 作为对这个新项目的引用
- 右键单击头文件>添加>现有项...
- 添加pjsip-apps\src\swig\pjsua2_wrapp.h
- 将 "new filter" 添加到名称为 "Generated Code"
的项目中
- 右键单击 "Generated code" 并添加新的现有项目。
- 添加pjsip-apps\src\swig\pjsua2_wrapp.cxx
- 右键单击项目和链接器>输入
- 将"Ws2_32.Lib"添加到"Additional Dependencies"
- 转到"VC++ Directories"
- 添加以下文件夹以包含路径(我使用的是完整路径!):
- c:\python37\include
- pjnath\include
- pjsip\include
- pjmedia\include
- pjlib-util\include
- pjlib\include
- 将以下文件夹添加到库目录:
- C:\Python36\libs
- 设置为常规:
- 目标名称:_$(ProjectName)
- 目标扩展名:.pyd
- 配置类型:动态库 (.dll)
- 转到解决方案的属性,然后 select 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
非常感谢 Krisz 的出色工作!
我刚在 Python 2.7 / 32 位上工作,有些地方略有不同,所以我会在这里添加它们:
环境:
- Windows 10
- 痛饮 4.0.1
- PJSIP 2.9
- Python 2.7.14(32 位)
- Visual Studio Express 2015(V 14.0.25431.01 更新 3)
Whaddado:
重要提示:检查您的 Python-interpreter 是否真的是 x64 或 win32,如下所示:
启动 python 会话并输入:
import platform
platform.architecture()
如果您有 32 位,请在选择 VS 中的目标平台时考虑这一点。
当您将此 %inline%-Snippet 添加到 pjsip-apps/src/swig/pjsua2.i 时,将其添加到 文件末尾!
启动 swig-command 时,省略“-py3”参数,如果你使用 Python 2.x
Krisz 的描述中有一点错字,在 "pjsua.py located under pjsip-apps/src/swig/python" -> 当然是 pjsua2.py 的意思。不要使用 pjsua.py.
最终将 _pjsua2.lib 和 pjsua2.py 复制到 \Lib\site-packages\ 并将 _pjsua2.pyd 复制到 \DLLs\ 以便它们随处可用。
我尝试为 Python 编译 PJSUA2。我可以设法用 Visual Studio 2015 社区版编译源代码。
我的问题是,现在如何安装 Python 模块?
指南建议使用 make 和 make install。我也尝试安装 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_comp
- 设置 swig_java_pjsua2 构建。
- 将以下文件夹添加到 swig_java_pjsua2 VC++ 包含目录
- c:\程序Files\Java\jdk-11.0.2\include
- c:\程序Files\Java\jdk-11.0.2\include\win32
- 构建解决方案
我可以做一个变通方法来为 Python 3.7 编译 pjsua2。如果您有更好的解决方案或对此解决方法的建议,请告诉我
先决条件:
- 列表项
- 下载并解压 swig (swigwin 4.0.0)
- 下载并安装JDK
- 下载并安装 Python (Python 3.7.3 x64) 并在自定义安装时设置:
- 打勾"Add Python to environment variables"
- 打勾"Precompile standard library"
- 打勾"Download debugging symbols"
- 打勾"Download debug binaries (requires VS 2015 or later)"
- 根据需要设置自定义路径
- 将 swigwin 位置添加到系统路径
- 将Python位置添加到系统路径
- 添加JAVA_HOME系统变量
- 添加 %JAVA_HOME%\bin 到系统路径
- 安装 Visual Studio 2015 社区版
步骤:
- 下载并解压 pjsip 2.8
- 在 pjlib/inlclude/pj/ 文件夹下创建空 config_site.h
- 在VS 中打开pjproject-vs14.sln
- 会有不支持的警告window,按确定
- 在 "Install Missing Features" windows,按安装
- VS 安装程序将启动,必须关闭 VS 才能完成安装。
- 我在安装中也添加了"Windows 10 SDK (10.0.10586)"。
- 我还在 Windows 10 上启用了开发者模式,但这可能是可选的
- 在 VS 中再次打开项目
- 在顶部下拉列表中将项目设置为 Release 和 x64
- 右键单击解决方案,然后转到“配置属性”>“配置”
- 从 selection 中删除所有与 uwp 和 wp8 相关的项目,例如 pjsua_cli_uwp_comp、pjsua_cli_wp8_comp
- 按确定,然后构建解决方案
- 构建后我有 34 个成功,0 个失败的解决方案。
将以下行添加到 pjsip-apps/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
将新的 "Empty Project" (Visual C++) 添加到名称为 swig_python_pjsua2 的解决方案
- 添加 libpjproject 和 pjsua2_lib 作为对这个新项目的引用
- 右键单击头文件>添加>现有项...
- 添加pjsip-apps\src\swig\pjsua2_wrapp.h
- 将 "new filter" 添加到名称为 "Generated Code" 的项目中
- 右键单击 "Generated code" 并添加新的现有项目。
- 添加pjsip-apps\src\swig\pjsua2_wrapp.cxx
- 右键单击项目和链接器>输入
- 将"Ws2_32.Lib"添加到"Additional Dependencies"
- 转到"VC++ Directories"
- 添加以下文件夹以包含路径(我使用的是完整路径!):
- c:\python37\include
- pjnath\include
- pjsip\include
- pjmedia\include
- pjlib-util\include
- pjlib\include
- 将以下文件夹添加到库目录:
- C:\Python36\libs
- 设置为常规:
- 目标名称:_$(ProjectName)
- 目标扩展名:.pyd
- 配置类型:动态库 (.dll)
- 转到解决方案的属性,然后 select 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
非常感谢 Krisz 的出色工作!
我刚在 Python 2.7 / 32 位上工作,有些地方略有不同,所以我会在这里添加它们:
环境:
- Windows 10
- 痛饮 4.0.1
- PJSIP 2.9
- Python 2.7.14(32 位)
- Visual Studio Express 2015(V 14.0.25431.01 更新 3)
Whaddado:
重要提示:检查您的 Python-interpreter 是否真的是 x64 或 win32,如下所示: 启动 python 会话并输入:
import platform
platform.architecture()
如果您有 32 位,请在选择 VS 中的目标平台时考虑这一点。
当您将此 %inline%-Snippet 添加到 pjsip-apps/src/swig/pjsua2.i 时,将其添加到 文件末尾!
启动 swig-command 时,省略“-py3”参数,如果你使用 Python 2.x
Krisz 的描述中有一点错字,在 "pjsua.py located under pjsip-apps/src/swig/python" -> 当然是 pjsua2.py 的意思。不要使用 pjsua.py.
最终将 _pjsua2.lib 和 pjsua2.py 复制到 \Lib\site-packages\ 并将 _pjsua2.pyd 复制到 \DLLs\ 以便它们随处可用。