天天看點

OpenH323編譯總結(轉)

編譯時間:2008/05/01 成功編譯時間:2008/05/11

編譯前先把opal、openh323、pwlib下的include 頭檔案包含到 visual studio 2005頭檔案下

注意事項:

   1.當運作configure.exe進行環境配置的時候它會從c盤掃描你的目錄進而注冊所要編譯的環境,當你後來的盤裡有符合前面的配置項,它将會更新之前的配置項.

   2.openh323開發包包含的源碼有三個:opal、opeh323、ptlib(以前是pwlib),是以要編譯它們必須把它們同時放到一個目錄下,并且ptlib改名為pwlib目錄,這樣才能順利編譯.

編譯OPENH323總結:

(一).在編譯G726、GSM0610、ILBCCODEC、IMA_ADPCM、LPC_10、Speex時都會提示//#include <opalplugin.h>的錯誤,為了解決問題将這行代碼改寫為 #include "../../../include/opalplugin.h",這樣這些編碼的代碼就可以編譯通過了

(二).編譯VoiceAgeG729

    (1)從網上下載下傳 G729.zip。

    (2)解壓後如果是檔案名va_g729.h 和 va_g729.lib 則将它們更名為 va_g729a.h 和 va_g729a.lib,然後拷貝到 openh323/plugins/audio/VoiceAgeG729/va_g729目錄下。

    (3)重新編譯VoiceAgeG729工程。

(三).編譯Speex時會提示lsp.h檔案不是WINDOWS格式的檔案,它是MAC下的文本格式,是以應該把它轉換為WINDOWS文本格式才能夠編譯通過

(四).編譯GSMAMR時會提示AMRFILES,也就是AMR編碼不的源代碼不存在,但你可以在opal-v2_4_0-src.zip的源碼中的opal/plugins/audio/gsm-amr路徑找到相應的源代碼,隻要把這些源碼拷貝到openh323/plugins/audio/gsm-amr再重新編譯就可以編譯通過了。

(五).編譯OPENH323_dll時出現:LINK : fatal error LNK1104: 無法打開檔案“ptclibd.lib”,要生成ptclibd.lib或ptclib.lib這兩個檔案,你必須編譯/pwlib/src/ptlib/msos下的Console Components.dsp工程,如果覺得利用vc++6.0編譯不過,你可以試着重建這個檔案的一個複制版本,然後把它轉換為vc++2005的格式,你就可以編譯通過的了,編譯它後,你可以看到ptclibd.lib或ptclib.lib

編譯opal總結:

(一).在編譯USB HID LID與Vic H.261 Video Codec時,如果你使用的是Visual studio 2005 express系列的編譯器時,你必須安裝the Microsoft Platform SDK才能編譯通過,不然就會提示 fatal error C1083: Cannot open include file: 'windows.h': No such file or directory,在platform sdk裡會包含這些開發包。

(二).編譯EasyG729A Audio Codec裡需要下載下傳EasyG729A http://www.imtelephone.com/G729A_Eval.zip,把它解壓後添加到/opal/plugins/audio/EasyCodec/EasyG729A下的檔案夾裡,再重新編譯。

(三).編譯EasyG728 Audio Codec需要下載下傳EasyG728 http://www.imtelephone.com/G728_Eval.zip,把它解壓後添加到/opal/plugins/audio/EasyCodec/EasyG728下的檔案夾裡,再重新編譯。

(四).編譯EasyG7231 Audio Codec需要下載下傳EasyG723.1 http://www.easyconfex.com/G7231_Eval.zip,把它解壓後添加到/opal/plugins/audio/EasyCodec/EasyG7231下檔案夾裡,再重新編譯。

(五).在編譯opal_static時編譯precompile.cxx檔案時會發現這樣的一個錯誤:

正在編譯...

precompile.cxx

D:/Program Files/Microsoft Visual Studio 8/VC/include/xlocnum(123) : error C2857: 在源檔案中沒有找到用/Ycptlib.h 指令行選項指定的“#include”語句,這個錯誤原因是這樣造成的:當你在VSTUDIO裡已經設定好包含的環境了,但你修改下面的形式,這樣就可能會出現這樣的錯誤提示

//#include <ptlib.h>

#include "../../../pwlib/include/ptlib.h"

(六).要成功編譯opal_sample工程,因為這個工程使用了wxWidgets類,是以你必須下載下傳一個wxWidgets源碼包,并編譯它。在下載下傳完成源碼後,你必須把這個源碼的目錄路徑設定到系統的環境變量中,才能使用,如:

OpenH323編譯總結(轉)

編譯ptlib(new name)/pwlib(old name)總結:

(一).編譯pwlib時要應用到GNU bison是以你必須下載下傳這個bison http://www.voxgratia.org/bin/flexbison.zip,解壓到c:盤,把解壓出來的目錄tools包含到vc++的VC++ Directories 下的executable files中(你可以檢視解出來的ReadMe.txt)檔案),如:

OpenH323編譯總結(轉)

(二).把下來的兩個設定設定到VC++環境中

Add installdir/PWLIB/INCLUDE to the Include directory list

Add installdir/PWLIB/LIB to the Executable directory list 這個是為了包含 MergeSym.exe檔案,而這個檔案需要編譯MergeSym工程的release版才得到

Add installdir/PWLIB/LIB to the Library directory list

(三).當你使用的是Visual c++ 2005 express版本的編譯器時,你編譯PTLIB STATIC 時會遇到fatal error C1083: Cannot open include file: 'd3dtypes.h': No such file or directory這樣的錯誤,你必須在環境中包含這個檔案的地方,你需要安裝directx sdk這樣才能編譯通過。

(四).編譯ptlib 需要應用到很多環境,需要expat,openssl,SDL,openldap,directx_sdk;openldap的WINDOWS版可以到這個位址下下載下傳:http://download.bergmans.us/openldap/

(五).編譯ptlib裡添加了openldap時,它要求使用ATL類庫,如果你使用的是visual c++ 2005 express版本的編譯器,由于它沒有atl類庫,是以你必須尋找這個類庫,并把它包含到vc++環境中。(注:如果是使用VC++2005速成版,的編譯器,那麼請你換一個編譯器)

(六).編譯ptlib時出現“'MergeSym' 不是内部或外部指令,也不是可運作的程式”,則你應該先編譯Release版。The static libraries can be built independently, but building the DLLs requires building the "MERGESYM" utility first which depends on the Release version of the libraries.我們查找一下發現,編譯PTLIB的時候,它要應用到一些工具,這樣工具就在PWLIB目錄下的TOOLS目錄下,請你先編譯它們。

(七).編譯時遇到"fatal error C1001: 編譯器中發生内部錯誤。"編譯的錯誤時,可能就是程式的源碼的格式和Visual Studio不符合才這樣,你可以重新整理指定的代碼行的格式,這樣就可能會編譯通過。

(八).要使用openldap庫,那麼必須下載下傳這個的源代碼,并編譯它組成一個lib庫。編譯openldap請看本目錄下的OpenLDAP for win32 編譯過程舉例.rtf 或者直接把openldap-2.1.17_bin.zip : http://www.voxgratia.org/bin/openldap-2.1.17_bin.zip下載下傳下來,再把包含的檔案拷貝到指定的包含目錄下。要自己編譯openldap庫,你可以下載下傳下來兩個壓縮包,然後把它們解壓到相同的目錄。ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.1.17.tgz   ;  http://www.voxgratia.org/bin/openldap-2.1.17-win32.zip

(九).要使用SDL庫,必須編譯SDL源代碼或下載下傳現成的庫。

(十).編譯tools/PacketVxD需要彙編語言。

(十一).編譯項目時出現"項目: error PRJ0002 : 錯誤的結果31 (從“D:/Program Files/Microsoft Visual Studio 8/VC/bin/mt.exe”傳回)。"提示,你必須重新編譯就可以編譯通過。錯誤原因還不明确。

(十二).編譯openh323_dll時會出現"openh323sd.lib(ffh263codec.obj) : error LNK2019: 無法解析的外部符号"public: virtual int __thiscall FfmpgLink::IsLoaded(void)" ([email protected]@@UAEHXZ),該符号在函數"public: __thiscall H323_FFH263Codec::H323_FFH263Codec(enum H323Codec::Direction,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int)" ([email protected]@[email protected]@[email protected]@[email protected]) 中被引用" 的錯誤,這是由于"/openh323/src/ffh263codec.cxx"的檔案中的類FfmpgLink中的函數BOOL IsLoaded();沒有編寫實作方式,你可以把這個類的這個方法注釋掉,直接使用基類的這個繼承過來的方法。

注意:

    1* 或者你沒有使用expat的庫也成功編譯了openh323,但當你編譯opal執行個體的時候因為需要使用OpalIVREndPoint類,而這些類的定義必須使用expat為基礎,是以你必須使用expat,要使用expat庫,你可以上網下載下傳這個庫的源代碼,下載下傳完成後把它編譯,編譯成功後,你必須把expat的目錄結構修改一下(或者你可以更改pwlib的搜尋目錄,“搜尋目錄的路徑結構在configure.ac檔案中,這個是代碼”,但在你不清楚的情況下,最好是更改expat目錄結構),把expat源碼包解壓到/expat/source目錄下,把編譯出來的lib等複制到/expat/libs目錄下就可以讓pwlib搜尋配置得到了.

編譯pwlib_sample/opal_samples:

(一).要成功編譯執行個體,因為執行個體的界面是應用wxWidgets作為界面,是以要編譯成功,必須要成功編譯wxWidgets并且包含到vc的預設目錄中.

(二).編譯OpenPhone的時候會出現下面的錯誤:

     "Checking for wxWidgets

     Creating C++ source from XML resource file

     系統找不到指定的路徑。

     Project : error PRJ0019: 工具從"Creating C++ source from XML resource file""

編譯所需要的配置源碼庫:

//---------------------

//附加

expat v2.0.1

openssl v0.9.8

SDL v1.2.13

openldap v2.1.17

MicroSoft Speech API v5.1

DirectX SDK

EasyG728

EasyG729

EasyG7231

va_g729

cyrus_sasl v2.1.15

flexbison

wxWidgets

//-----------------------

//主要

opal v2_4_0

openh323 v1_19_0_1

ptlib v1_12_0

編譯成功後,需要運作執行個體程式,你需要做如下工作:

把下面的DLL複制到C:/WINDOWS/system32:

(運作ptlib執行個體的時候必須複制下面的DLL)

libexpat.dll

libsasl.dll

PTLib.dll

PTLibd.dll

(運作opal執行個體的時候必須複制下面的DLL和以上的DLL)

opal.dll

opald.dll

openldap.dll

SDL.dll

(運作openh323執行個體的時候必須複制下面的DLL和以上的DLL)

OpenH323.dll

OpenH323d.dll

原作者語:

續上一次釋出的編譯經曆,現在更新之,這個版本應該夠你用的了,因為它能通過openh323所有編譯條件進行編譯,不過是在windows平台下編譯的,如果有人有linux下的編譯版本,請發給我,我的交流e-mail是:[email protected]

繼續閱讀