pjsip的编译及简单使用

本文详细介绍了如何下载、编译并测试pjproject-1.12,包括解决编译错误、配置环境及使用Wireshark截获sip命令的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载
我下载的是pjproject-1.12.zip

2.编译
将下载的文件解压后,目录下有pjproject-vs8.sln,可以直接使用vs2005打开,
目录下的readme.txt文件中有编译说明,关于windows下的注意点如下:
  Building Win32 Target with Microsoft Visual Studio
          Generally we can just do these steps:

         1. Visual Studio 6: open pjproject.dsw workspace,
         2. Visual Studio 2005: open pjproject-vs8.sln solution,
         3. Create an empty pjlib/include/pj/config_site.h, and
         4. build the pjsua application.
新建一个空文件pjlib/include/pj/config_site.h后,编译pjsua工程出现以下错误:
1>LINK : fatal error LNK1104: cannot open file 'dsound.lib'

看名字dsound.lib像是directX里面的东本,试着在Microsoft DirectX 9.0 SDK (Summer 2004)/lib中查找(DirectX SDK需要单独下载),果然找到了,将路径添加进去后,编译通过了。在pjproject-1.12\pjsip-apps\bin目录中,可以看到编译好的程序 pjsua-i386-Win32-vc8-Debug.exe

3.测试
似乎不能在一台机子上打开两个客户端,所以借助虚拟机。 分别在在p1、p2上运行程序,根据提示信息,拨打电话过程如下:
1).在p1中输入"m",接着输入sip:192.168.9.81(p2的ip)
2).p2中会打印出接听提示信息,输入"a"接听,再输入200作为应答
3).现在连接建立成功了,p2输入"h"挂电话
截个图:


4.用Wireshark截获的sip命令


 
### 如何编译 PJSIP 生成动态库 #### 准备工作 为了成功编译 PJSIP 动态库,在开始前需确保已下载并解压 PJSIP 源码至本地目录。对于特定的操作系统,还需准备相应的开发工具链。 #### 设置构建环境 在 Windows 平台上使用 Qt (5.15.2) 和 Visual Studio (2019),首先应创建 `include` 及 `lib` 文件夹用于存放头文件和库文件[^2]。这有助于后续项目集成时方便管理依赖关系。 #### 执行配置脚本 进入 PJSIP 的根目录下运行 configure 脚本来初始化构建选项。通过指定 `-prefix=/opt/pjproject` 参数来定义最终安装路径,并启用共享库支持以便于生成 `.dll` 文件而非静态链接库: ```bash ./configure --prefix=/opt/pjproject --enable-shared ``` 此命令会自动检测当前系统的特性并设置合适的编译参数[^3]。 #### 构建过程 完成上述准备工作之后,即可调用 Make 工具启动实际的编译流程。如果一切顺利,则会在目标位置找到所需的动态链接库(DLL)。具体操作如下所示: ```bash make dep && make clean && make sudo make install ``` 以上指令序列依次处理依赖项、清理旧版残留物、正式编译以及最后一步将产物部署到预设的目标文件夹内。 #### SWIG Demo 编译 另外值得注意的是,当涉及到跨语言绑定的应用场景时,还可以利用 SWIG 来扩展功能。例如要编译位于 `pjsip-apps/src/swig` 下面的例子程序,只需切换至此处再单独执行一次简单的 Make 命令即可[^1]: ```bash cd pjsip-apps/src/swig make ``` 这样就能获得一组可供测试使用的接口封装模块了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值