1. 程式人生 > >osip及eXosip的編譯及開發方法

osip及eXosip的編譯及開發方法

osip及eXosip的編譯方法

在最新版本的osip2、exosip2中不支援在VC6.0下編譯osip、exosip協議棧的方法

說明:
1.以下文章中的osip版本為3.1.0
2.eXosip版本為3.1.0
3.編譯環境為:Windows XP 專業版本+VS 2005
4.例項程式下載:http://download.csdn.net/source/617797
5.osip、exosip、openssl的開發包下載,開發包包括:osip2.dll、osipparser2.dll、exosip2.dll、libeay32.dll、ssleay32.dll和相對應的lib檔案,下載地址同上

第一步,下載:
http://download.savannah.gnu.org/releases/osip/libosip2-3.1.0.tar.gz


下載最新的osip庫並解壓
http://download.savannah.gnu.org/releases/exosip/libeXosip2-3.1.0.tar.gz
下載最新的eXsoip庫並解壓
第二步,編譯osip3.1.0:
1.用VS2005開啟libosip2-3.1.0/platform/vsnet/osip.sln
2.對osip2和osipparser2專案生成Release DLL
3.其生成的LIB/DLL 位於:libosip2-3.1.0/platform/vsnet/Release DLL/下
4.如果有出現外部變數找不到的情況,很有可能是生成的dll沒有實現該函式,在def檔案中刪除找不到的外部變數就好了
第三步,編譯eXosip3.1.0:
1.用VS2005開啟libeXosip2-3.1/platform/vsnet/eXosip.sln
2.將libosip2-3.1/include/osip2目錄COPY到libeXosip2-3.1/include/下
3.將libosip2-3.1/include/osipparser2目錄COPY到libeXosip2-3.1/include/下
4.在libeXosip2-3.1目錄下新建lib目錄
5.將“第二步”中生成的libosip2-3.1/platform/vsnet/Release DLL/osip2.lib檔案COPY到libeXosip2-3.1/lib目錄下
6.將“第二步”中生成的libosip2-3.1/platform/vsnet/Release DLL/osipparser2.lib檔案COPY到libeXosip2-3.1/lib目錄下
7.修改專案屬性,新增Dnsapi.lib Iphlpapi.lib Ws2_32.lib osip2.lib osipparser2.lib庫輸入
8.修改專案屬性,新增庫目錄../../lib
9.修改專案的輸出為.DLL,預設為.lib
10.編譯Relase DLL
11.其生成的LIB/DLL 位於:libeXosip2-3.1/platform/vsnet/Release/下

注意:

在eXoSip.def 中新增下面函式的匯出,不知道是為什麼 這些函式沒有匯出!
     eXosip_call_set_reference

    eXosip_call_build_initial_invite

    eXosip_call_send_initial_invite

    eXosip_call_build_request

    eXosip_call_build_ack

    eXosip_call_send_ack

    eXosip_call_build_refer

    eXosip_call_build_info

    eXosip_call_build_options

    eXosip_call_build_update

    eXosip_call_build_notify

    eXosip_call_send_request

    eXosip_call_build_answer

    eXosip_call_send_answer

    eXosip_call_terminate

    eXosip_call_build_prack

    eXosip_call_send_prack

    eXosip_call_get_referto

    eXosip_call_find_by_replaces

編譯osip可能會出現如下錯誤:

1:在osipparser.dll的def檔案會出現幾個拼寫錯誤,如缺少MD5_****的函式前面缺少osip_,使得聯結器出現link2019錯誤,解決方法是在前面加上osip_

2:但是如果在編譯的時候出現錯誤:

libnet_prand.obj : error LNK2001: unresolved external symbol [email protected]
libnet_prand.obj : error LNK2001: unresolved external symbol [email protected]
libnet_prand.obj : error LNK2001: unresolved external symbol [email protected]
Debug/Libnet.dll : fatal error LNK1120: 3 unresolved externals

仔細看了下,CryptReleaseContext等這三個函式不是從advapi32.lib裡匯入的麼?難道要加上advapi32.lib庫?在專案設定的連線裡把advapi32.lib加上,然後rebuil all,果然成功。

如果出現是__RTC_CheckEsp這個外部變數無法解析,很大可能是兩個專案的配置不一樣,比如說一個能從父專案繼承什麼。另外一個沒有設定,就會出現這個問題。

編譯eXosip可能會出現的問題:

要包含標頭檔案:ssleay32.lib libeay32.lib Dnsapi.lib Iphlpapi.lib Ws2_32.lib osip2.lib osipparser2.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ,其中ssleay32.lib libeay32.lib是openssl的靜態庫。

可能還會找不到一些無法解析的外部變數,可能是在osip的輸出dll的def檔案中沒有加上


     osip_transaction_set_srv_record     @122

然後重新編譯osip

外部變數問題,一般都是庫檔案的問題,記住要把庫檔案放在工程目錄lib目錄下(沒有lib目錄自己新建一個) 然後在工具->專案->c/c++->C++目錄下把設定../../lib設定成包含的目錄

其中ssleay32.lib libeay32.lib是openssl編譯形成的靜態連結庫,可以從網上下載,或者自己編譯

之外,尤其大家下載的原始碼由於認為的或者是編譯環境的不同,容易造成多種錯誤,我還碰到了個無法解析的Osip_^^^!!#@[email protected]#!函式無法解析的情況,在osip中的def檔案一查,果然缺少個122的函式檔案輸出宣告,加進去重新編譯osip,成功,在編譯eXosip成功!

最後執行例項,進行專案配置:

osip及eXosip的開發方法:
將以下程式作為UAS.CPP儲存


將以下程式作為UAC.CPP儲存

相關推薦

Visual Studio 2010下編譯osipeXosip並搭建開發環境的方法

第一步,下載:到http://download.savannah.gnu.org/releases/osip/libosip2-3.6.0.tar.gz下載最新的osip庫並解壓。 到http://download.savannah.gnu.org/releases/exo

osipeXosip編譯開發方法

osip及eXosip的編譯方法 在最新版本的osip2、exosip2中不支援在VC6.0下編譯osip、exosip協議棧的方法 說明:1.以下文章中的osip版本為3.1.02.eXosip版本為3.1.03.編譯環境為:Windows XP 專業版本+VS 20054.例項程式下載:http://d

【imx6ul】從頭搭建imx6ul開發環境(uboot、核心編譯燒入、mfgtools詳細使用方法

歡迎掃碼關注微信公眾號:柒零玖嵌入式,更多嵌入式軟硬體相關分享!系統:linux-4.1.15檔案系統:busybox-1.22.1.tar.bz2編譯器: gcc version 4.9.1 2014

VS2013下編譯osipexosip的5.0版本靜態庫搭建和簡單例子的實現

# include <eXosip2/eXosip.h>  # include <stdio.h>  # include <stdlib.h>  # include <Winsock2.h>  int main(int argc, char *argv[]){s

從頭搭建imx6ull開發環境(uboot、核心編譯燒入、mfgtools詳細使用方法

升級時候的操作檔案,s MFGtools 會根據檔案裡面 t list 的內容進行相應的升級。檔案以 [cpp] view plain copy  print? <CMD state="BootStrap"type="jump" > Jumping to OS image. <

A33_Vstar_Android_SDK開發 編譯燒寫遇到的問題

A33_Vstar_Android_SDK開發 遇到的問題 整理一下Android SDK編譯及燒寫的時候,遇到的問題和解決的辦法   問題1  .tar.bz2檔案解壓命令 解決辦法:.tar.gz     格式解壓為&n

C語言位元組對齊設定編譯對齊方式方法

  一、概念         對齊跟資料在記憶體中的位置有關。如果一個變數的記憶體地址正好位於它長度的整數倍,他就被稱做自然對齊。比如在32位cpu下,假設一個整型變數的地址為0x00000004,那它就是自然對齊的。       二、為什麼要位元組對齊        需要位

RK3128系統&驅動開發分享——(二)、編譯燒錄

燒錄工具及文件:連結:https://pan.baidu.com/s/1jIvihSE 密碼:y67p本文主要講解三部分:一、編譯原理流程講解二、打包指令碼講解三、生成檔案及燒錄講解一、編譯原理流程講解. build/envsetup.sh 配置命令環境(執行原始碼目錄下的b

rkdeveloptool編譯使用方法

rkdeveloptool is a tool from Rockchip to communicate with Rockusb devices, consider to be a opensource version of upgrade_tool with very little differenc

OSG3.4.0+VS2010+WIN10編譯二次開發環境搭建

         這是我的第一篇博文,最近在學習QGIS和OSG,在開源軟體編譯及環境搭建中遇到了一系列的問題,因此也查詢學習了網上的很多教程,在幾次試驗後終於完成了原始碼的編譯和環境配置,寫下這篇

Android開發中資料庫(sqlite)的檢視一些問題的解決方法

最近在學習Android中的Sqlite遇到一些問題,這裡做一下總結。 一、建立資料庫 首先你要新建一個使用Sqlite的APP,開發工具Ecplise、AndroidStudio都可,這裡以後者AS為例。如果你沒有現成的程式,可以用博主的這個、 檔名

Android Studio 怎麼新增使用第三方jar包無法編譯的問題解決方法

一直在考慮著寫部落格什麼的,估計有好幾年了吧。好吧,我承認我很懶啦o(╯□╰)o,那麼就先從一篇轉載開始吧 原文地址 在使用Android Studio新增第三方包 ksoap2-android-assembly-3.0.0-jar-with-dependencies.

flume1.7原始碼編譯main方法啟動

一、編譯 首先下載flume1.7原始碼,匯入eclipse 1.Maven依賴報錯Missing artifact jdk.tools:jdk.tools:jar:1.7 新增依賴 <

無法開啟預編譯標頭檔案的解決方法編譯頭原理[ZZ]

1。用VC.NET編輯程式,按Ctrl+F7,出現下列錯誤: fatal error C1083: 無法開啟預編譯標頭檔案:“Debug/UGFace.pch”: No such file or  directory   解決方法:修改:專案->屬性->C/C

JMeter二次開發(1)-eclipse環境配置原始碼編譯

1.下載src並解壓 2.獲取所需jar包,編譯 ant download_jars ant install 3.eclipse新建Java Project , [Import] ->

編譯安裝最新的qt/x11 4.3.4,qtopia 4.3.1 ,qtopia-core-opensource-src-4.3.3以及使用方法

首先去官方網站下載最新的這倆東西的原始碼包:http://trolltech.com/downloads/opensourceqt-x11-opensource-src-4.3.4.tar.gzqtopia-opensource-src-4.3.1.tar.gz 在/也就是根

oSIP協議棧(eXoSIP,Ortp等)使用入門(轉)

(CopyLeft by Meineson | www.mbstudio.cn,原創文章,歡迎轉載,但請保留出處說明!) 本文件最新版本及文中提到的相關原始碼及VC6工程檔案請在本站找,嘿嘿~~(首頁的SkyDriver公開資料夾中,可能需要用代理才能正常訪問該空間——空間絕

32位的fortran函式庫在64位Linux下編譯使用的方法

      最近一直在使用一個數值函式庫。為了嘗試64位的精度,花了整夜折騰出些東西。       函式庫在32位Fedora下使用時,文件提供的例程的呼叫的都是以靜態庫方式呼叫的,使用g95編譯後,用ar 工具整理到了一個.a檔案。在64位的Fedora 13中,使用64位

error無法開啟預編譯標頭檔案的解決方法編譯頭原理

1。用VC.NET編輯程式,按Ctrl+F7,出現下列錯誤: fatal error C1083: 無法開啟預編譯標頭檔案:“Debug/UGFace.pch”: No such file or directory 解決方法:修改:專案->屬性->C/C++

visualvm監控jvm遠程jvm監控方法

title sdn replace html 題解 日誌 命令工具 lin lac VisualVM是Sun的一個OpenJDK項目,其目的在於為Java應用創建一個整套的問題解決工具。它集成了多個JDK命令工具的一個可視化工具,它主要用來監控JVM的運行情況,可以用它來