1. 程式人生 > >入門:編譯,使用PJSIP,PJMEDIA【譯】

入門:編譯,使用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編譯類庫和應用程式:

  1. Visual Studio 6/2002/2003:開啟工作空間檔案pjproject.dsw
  2. Visual Studio 8 (VS 2005):開啟解決方案檔案pjproject-vs8.sln
  3. pjsua設定為活動專案
  4. 將平臺型別設定為Win32
  5. 選擇合適的編譯型別Debug或者Release
  6. 編譯專案。會編譯pjsua應用程式以及其需要的pjsua需要的類庫
  7. 編譯成功後,將會在pjsip-apps/bin資料夾中生成pjsua應用程式,其他的類庫檔案會生成在各自的專案中。

編譯例子:

  1. (選擇和上面相同的工作空間)
  2. 設定案例專案為活動專案
  3. 編譯專案,在編譯專案的同時也會編譯專案所需要的類庫。
  4. 編譯成功後,將會在pjsip-apps/bin/samples資料夾中生成案例程式,其他的類庫檔案在各自的專案中。

除錯案例程式

如何使用Samples.mak的makefile檔案編譯案例程式,那麼將很難在Visual Studio除錯這些應用程式。解決方法是,pjsip_apps工作空間包含有一個叫sample_debug的專案可用於除錯案例程式。

如何使用sample_debug專案除錯程式:

  1. 設定sample_debug為活動專案
  2. 編譯專案中的debug.c檔案
  3. 在#include行包含需要進行除錯的案例程式
  4. 選擇Debug編譯型別
  5. 編譯並除錯專案

下一步:在你的專案中使用pjproject類庫

1.在你的專案中搜索路徑中包含如下include目錄

  •   pjlib/include
  •   pjlib-util/include
  •   pjnath/include
  •   pjmedia/include
  •   pjsip/include

2.將類庫目錄(位於pjproject原始碼的根目錄)設定到類庫搜尋路徑中

3.將有關PJ的標頭檔案包含於原始碼檔案中,例如,下面的寫法將包含PJ所有的函式:

  1. #include <pjlib.h>
  2. #include <pjlib-util.h>
  3. #include <pjnath.h>
  4. #include <pjsip.h>
  5. #include <pjsip_ua.h>
  6. #include <pjsip_simple.h>
  7. #include <pjsua-lib/pjsua.h>
  8. #include <pjmedia.h>
  9. #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

其他: