?? 如何編譯ortp協議棧(windows).txt
字號:
ortp的編譯:
假如你現在采用的是D盤(本人采用ortp-0.9.1,VC6.0,Windows XP):
1.在D盤上新建一個ortp文件夾D:\ortp;
2.把ortp-0.9.1文件夾下的include文件夾整個拷到D盤的ortp文件夾里;
3.新建VC工程,選Win32 Dynamic-Link Library,Project name:ortp,
Location:D:\ortp\,然后選An empty DLL project,
接著在 Tools\options\Directories\include files設置如下:
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
D:\ortp\INCLUDE
D:\ortp\ortp
按如上設置即可。
注:以上Project\Setting按默認設置。
platform sdk一定要放到最上面,否則會出錯。
4.刪除新建的vc工程的默認的source files和header files,將ortp-0.9.1\src\ortp\
里面的所有*.c和*.h文件拷到D:\ortp\ortp\目錄下,即和*.dsw和*.dsp文件放一起。
5.在vc工程中加入這些文件(.c,.h)
6.還要在D:\ortp\ortp,也就是當前文件夾中添加ortp-config.h,ortp-config-win32.h,glib.h,glibconfig.h這四個頭文件
其中有些地方有重定義,我做了一些修改。這四個文件也可以從網上下載,google一下便可找到!
編譯出現的問題的解決方法:
1.在posixtimer.c中加上mmsystem.h
在port.c中加上winsock2.h
并且連接頭文件winmm.lib和ws2_32.lib
2.可能會遇到long long類型錯誤,可以改成long或者unsigned long,相應的1LL也要改成1L或者1UL
不過這樣只是解決了編譯的問題,變量如果可以為負那么unsigned long就會不可行,需要具體的去看程序
而且long的容量有限和作者初衷還是有差別的,不知道大家有什么更好的方法,請聯系我,也歡迎討論!
3.以下兩個函數沒有返回值,加上return 0;
WIN_cond_init()
WIN_cond_wait()
4.再有就是一些版本輸出信息,如ortp.c中
ortp_message("oRTP-" ORTP_VERSION " initialized.");
我的做法是改為ortp_message("oRTP-0.9.1 initialized.");
ortp_min_version_required中的版本信息也沒有定義,自己手工加上
#define ORTP_MAJOR_VERSION 0
#define ORTP_MINOR_VERSION 9
#define ORTP_MICRO_VERSION 1
5.對于integral size mismatch in argument錯誤是因為程序定義的參數類型和windows定義的不一樣,
在調用windows庫函數的時候要將變量用windows的類型強制轉換一下,
如:將uint16_t類型的變量轉換為WORD類型的(其實都是unsigned short)
按照如上的方法可以最終編譯得到.dll庫文件 (照理說應該可以得到.lib和.dll兩個文件的,為什么這里得不到.lib文件,希望大蝦告之)
至于要得到.lib文件的話,編譯第3步要選擇Win32 Static Library就可以了!
匯思ID: sunnydavid
QQ:84293639(無知的秀才)
E-mail:sunnydavid_ren@163.com
歡迎各位同好和我討論osip,exosip及ortp,大家一起成長!^-^
另外偶對vc了解不深,若是有不對之處,歡迎指正,以免誤導其他同好!
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -