簡體   English   中英

如何使用 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 編譯的。

我也嘗試過使用 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 來構建。
  • 將以下文件夾添加到 swig_java_pjsua2 VC++ 包含目錄
    • c:\\Program Files\\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_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
  • 按確定,然后構建解決方案
  • 構建后我有 34 個成功和 0 個失敗的解決方案。
  • 將以下行添加到 pjsip-apps/src/swig 文件夾中的 pjsua2.i

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

    這個額外的內聯 swig 功能為創建記錄器問題提供了解決方法

  • 打開命令行(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
  • 將“新過濾器”添加到名為“生成的代碼”的項目中
  • 右鍵單擊“生成的代碼”並添加新的現有項目。
  • 添加 pjsip-apps\\src\\swig\\pjsua2_wrapp.cxx
  • 右鍵單擊項目和鏈接器>輸入
  • 將“Ws2_32.Lib”添加到“附加依賴項”
  • 轉到“VC++目錄”
  • 添加以下文件夾以包含路徑(我使用了完整路徑!):
    • c:\\python37\\包括
    • pjnath\\包括
    • pjsip\\包括
    • pjmedia\\包括
    • pjlib-util\\include
    • pjlib\\包括
  • 將以下文件夾添加到庫目錄:
    • 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

非常感謝 Krisz 所做的這項出色的工作!


我剛剛讓它在 Python 2.7 / 32bit 上工作,有些東西略有不同,所以我會在這里添加它們:

環境:

  • 視窗 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 會話並輸入:

    進口平台

    平台.架構()

    如果您有 32 位,請在選擇 VS 的目標平台時考慮這一點。

  2. 當您將此 %inline%-Snippet 添加到 pjsip-apps/src/swig/pjsua2.i 時,請將其添加到文件末尾!

  3. 啟動 swig-command 時,如果您使用 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\\ 中,使它們隨處可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM