谈OSIP2在QT下的编译Compiling

有非常浅薄的应用场景,去简单地使用SIP消息,而OSIP2 SIP协议栈,其开源证书相对友好,又同时支持了解析、构造消息,但无事务层、对话层状态机涉入的可能。

 简单地使用osip2消息子层sublayer模式如此:

                / / allocation/release of memory.

                xxxx_init(osip_xxx_t **el);

                xxxx_free(osip_xxx_t *el);

	xxxx_parse(osip_xxx_t *el, char *source);
	xxxx_to_str(osip_xxx_t *el, char **dest);

消息buffer自己利用套接字进行收发。但,首要地是要完成在QT下的编译。

最开始觉得这件事情,可能是件非常困难的事情,但是后来想想,其实自己忽略了OSIP2自己提供的configure脚本以及自带vs平台工程文件的指导价值。

简单参考了下上述信息,考虑了多线程的编译设置问题,在QT选择库工程顺利地完成了编译!!!

 

# 共享pro文件设置

TEMPLATE = lib
CONFIG -= qt
CONFIG += staticlib
CONFIG += c++11
TARGET =  osip2
INCLUDEPATH += include/
QMAKE_CFLAGS += -lpthread
#QMAKE_CXXFLAGS += -finput-charset
DEFINES+=HAVE_STRUCT_TIMEVAL HAVE_PTHREAD HAVE_SYS_SEM_H HAVE_FCNTL_H HAVE_SYS_TYPES_H
SOURCES += \
  ...省略    
HEADERS += \ 

  ...省略

 

后来写一个小测试程序,就疑惑于在测试程序,链接osio2库的当前路径,使用$$PWD代表了工程所在的目录,解决了此问题。也了解到了,QT的pro文件中的相对路径,在编译和链接阶段具有二义性,用环境变量就可以顺利规避此问题。

LIBS+=-L$$PWD/lib/ -losip2

 

# 两个不太完美的小尾巴

+ 为了让编译通过,自己从网上代码段,添加了联合结构semun的代码生命

union semun {
    int              val;    /* Value for SETVAL */
    struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
    unsigned short  *array;  /* Array for GETALL, SETALL */
    struct seminfo  *__buf;  /* Buffer for IPC_INFO (Linux specific) */
};
+ osip_mutex_t的前置声明

 

先使用起来为先,应该也不影响啥了......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章