📄 如何编译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 + -