入門:編譯,使用PJSIP,PJMEDIA【譯】
入門:在Windows系統上編譯相關程式碼
在本頁面中將會向你描述如何在Microsoft Visual Studio編譯pjsip類庫
1.在Windows上編譯前的準備工作
2.必備的一些條件
3.編譯專案
4.除錯案例程式
5.下一步:在你的專案中使用pjproject類庫
6.其他
在Windows中編譯的準備工作
1.很重要的一項是建立config_site.h檔案,詳細情況可以參見編譯前的準備
2.如何你還沒與原始碼,獲取程式碼。
必備的一些條件
在Visual Studio開發的專案檔案可以使用如下的一些工具:
- Microsoft Visual Studio 6,
- Microsoft Visual Studio .NET 2002,
- Microsoft Visual Studio .NET 2003,
- Microsoft Visual Studio/C++ 2005 (including Express edition),
- Microsoft Visual Studio 2008. Follow the instructions for Visual Studio 2005.
- 提示:目前還不支援Microsoft Visual Studio 2010 原因是Microsoft Visual Studio 2010不再支援native Windows Mobile開發,因此無法將PJSIP專案匯入到其中。不過,你可以使用VS 2010,但是你需要將Windows Mobile相關的內容從PJSIP專案中移除。
另外,還需要下面的SDK:
- 必須:DirectX SDK(在DirectX8,9兩個版本中測試通過)。在安裝DirectX後,將include files和library新增到Visual Studio.
- 如果沒有使用Visual Studio 2008該條可選:Platform SDK(Windows Server 2003 SP1上的Platform測試通過)
提示:儘管Visual Studio 6自身帶有Platform SDK,但還是需要新的Platform SDK。因為新的PJNATH類庫需要新的Platform SDK中的Iphlpapi.[h|lib]。
電腦配置需要:
- Windows NT, 2000, XP, 2003, 或者更新的版本,
- Windows 95/98可能也可以正常工作,不過沒有經過測試,
- 有足夠的記憶體用於編譯
編譯專案
按下面的步驟在Visual Studio編譯類庫和應用程式:
- Visual Studio 6/2002/2003:開啟工作空間檔案pjproject.dsw
- Visual Studio 8 (VS 2005):開啟解決方案檔案pjproject-vs8.sln
- 將pjsua設定為活動專案
- 將平臺型別設定為Win32
- 選擇合適的編譯型別Debug或者Release
- 編譯專案。會編譯pjsua應用程式以及其需要的pjsua需要的類庫
- 編譯成功後,將會在pjsip-apps/bin資料夾中生成pjsua應用程式,其他的類庫檔案會生成在各自的專案中。
編譯例子:
- (選擇和上面相同的工作空間)
- 設定案例專案為活動專案
- 編譯專案,在編譯專案的同時也會編譯專案所需要的類庫。
- 編譯成功後,將會在pjsip-apps/bin/samples資料夾中生成案例程式,其他的類庫檔案在各自的專案中。
除錯案例程式
如何使用Samples.mak的makefile檔案編譯案例程式,那麼將很難在Visual Studio除錯這些應用程式。解決方法是,pjsip_apps工作空間包含有一個叫sample_debug的專案可用於除錯案例程式。
如何使用sample_debug專案除錯程式:
- 設定sample_debug為活動專案
- 編譯專案中的debug.c檔案
- 在#include行包含需要進行除錯的案例程式
- 選擇Debug編譯型別
- 編譯並除錯專案
下一步:在你的專案中使用pjproject類庫
1.在你的專案中搜索路徑中包含如下include目錄
- pjlib/include
- pjlib-util/include
- pjnath/include
- pjmedia/include
- pjsip/include
2.將類庫目錄(位於pjproject原始碼的根目錄)設定到類庫搜尋路徑中
3.將有關PJ的標頭檔案包含於原始碼檔案中,例如,下面的寫法將包含PJ所有的函式:
- #include <pjlib.h>
- #include <pjlib-util.h>
- #include <pjnath.h>
- #include <pjsip.h>
- #include <pjsip_ua.h>
- #include <pjsip_simple.h>
- #include <pjsua-lib/pjsua.h>
- #include <pjmedia.h>
- #include <pjmedia-codec.h>
提示:在文件中你可以找到你所需要功能的API需要包含哪些標頭檔案。
4.在專案設定中定義巨集PJ_WIN32=1(可能在原始檔中定義這個巨集是不夠的)。
使用Visual C++建立Windows手機應用程式,我們需要在專案設定中定義巨集PJ_WIN32_WINCE=1
5.連線主要的pjproject類庫libpjproject。他包含了所需要的所有類庫。提示:實際的類庫名稱取決於目標名稱與編譯配置引數。比如:實際的類庫名稱可能類似於libpjproject-i386-win32-vc6-debug.lib,這是由我們使用Debug 或者 Release編譯引數決定的。
6.連線專案需要的另外一些類庫,比如:wsock32.lib, ws2_32.lib, ole32.lib, dsound.lib