VC6 中编译使用 pjsip 的工程
2011-02-28 14:49
267 查看
首先要正确的编译pjsip
下载、安装VC6的最新Platform SDK 。(安装的时候请不要选择注册环境变量,这样可能破坏系统的开发环境)
下载、安装Direct X SDK。
将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools->Options->Directories),在后边编译自己的工程的时候,如果出现错误可以尝试将路径Move到默认的路径前边。
根据自己项目的运行时库设置pjsip的运行时库,例如:如果项目的运行时库为 MDd 那么pjsip的各个项目的运行库也要为 MDd,这个可以在“Project(工程)->Settings(设置)->C/C++ ->Category(Code Generation) ->User run-time Library”中看到。一定要将pjsip中的各个工程调整为和你的项目的工程一样。
以上各项都完成后,将pjsua项目设置为活动项目,然后开始编译。
编译完成后,将pjproject\pjlib\lib、pjproject\pjlib-util\lib、pjproject\pjmedia\lib、pjproject\pjnath\lib、pjproject\pjsip\lib、pjproject\third_party\lib 目录下的*.lib库文件复制到 pjproject\lib 目录下,方便统一使用
然后要设置自己的工程了
同样将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools->Options->Directories)
首先要添加宏定义 PJ_WIN32=1 “Project(工程)->Settings(设置)->C/C++ ->Category(General) ->Preprocessor definitions“ 中的最后添加 PJ_WIN32=1 用逗号隔开。
然后要包含pjsip头文件的目录,这里假设pjsip放在你的工程目录下(...\project\pjproject),“Project(工程)->Settings(设置)->C/C++ ->Category(Preprocessor) ->additional include directories“中添加 ”.\pjproject\pjlib\include\,.\pjproject\pjlib-util\include\,.\pjproject\pjmedia\include\,.\pjproject\pjnath\include\,.\pjproject\pjsip\include\“
设置链选项:添加一些系统库文件,在“Project(工程)->Settings(设置)->Link->Object/Library Modules“中添加”IPHlpApi.lib wsock32.lib ws2_32.lib ole32.lib dsound.lib“。
设置库文件目录:在“Project(工程)->Settings(设置)->Link->Additional Library path“中添加".\pjproject\lib\"。
源文件中添加如下语句,这里假设已经编译了release 和 debug的pjsip。
至此,pjsip就可以用在工程里面了,写的比较仓促,如果有遗漏的地方或问题请联系我。
2014-07-09后记:
一转眼已经离开VOIP三年半了,这三年多里有许多刚开始VOIP旅程的网友给我发mail询问pjsip的事宜,但是我离开上家公司的时候也只是刚刚开始,对pj也并没有多么深的了解,因此为了免于误人子弟,便将mail隐去了,希望这篇文章能助你将环境搭建起来,以后的事情真的是无力帮助了。
致歉。
PS。我现在做航电软件测试,感觉压力好大 >_<
下载、安装VC6的最新Platform SDK 。(安装的时候请不要选择注册环境变量,这样可能破坏系统的开发环境)
下载、安装Direct X SDK。
将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools->Options->Directories),在后边编译自己的工程的时候,如果出现错误可以尝试将路径Move到默认的路径前边。
根据自己项目的运行时库设置pjsip的运行时库,例如:如果项目的运行时库为 MDd 那么pjsip的各个项目的运行库也要为 MDd,这个可以在“Project(工程)->Settings(设置)->C/C++ ->Category(Code Generation) ->User run-time Library”中看到。一定要将pjsip中的各个工程调整为和你的项目的工程一样。
以上各项都完成后,将pjsua项目设置为活动项目,然后开始编译。
编译完成后,将pjproject\pjlib\lib、pjproject\pjlib-util\lib、pjproject\pjmedia\lib、pjproject\pjnath\lib、pjproject\pjsip\lib、pjproject\third_party\lib 目录下的*.lib库文件复制到 pjproject\lib 目录下,方便统一使用
然后要设置自己的工程了
同样将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools->Options->Directories)
首先要添加宏定义 PJ_WIN32=1 “Project(工程)->Settings(设置)->C/C++ ->Category(General) ->Preprocessor definitions“ 中的最后添加 PJ_WIN32=1 用逗号隔开。
然后要包含pjsip头文件的目录,这里假设pjsip放在你的工程目录下(...\project\pjproject),“Project(工程)->Settings(设置)->C/C++ ->Category(Preprocessor) ->additional include directories“中添加 ”.\pjproject\pjlib\include\,.\pjproject\pjlib-util\include\,.\pjproject\pjmedia\include\,.\pjproject\pjnath\include\,.\pjproject\pjsip\include\“
设置链选项:添加一些系统库文件,在“Project(工程)->Settings(设置)->Link->Object/Library Modules“中添加”IPHlpApi.lib wsock32.lib ws2_32.lib ole32.lib dsound.lib“。
设置库文件目录:在“Project(工程)->Settings(设置)->Link->Additional Library path“中添加".\pjproject\lib\"。
源文件中添加如下语句,这里假设已经编译了release 和 debug的pjsip。
#include <pjsua-lib/pjsua.h> #ifdef _DEBUG #pragma comment(lib,"pjlib-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjlib-util-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjmedia-audiodev-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjmedia-codec-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjmedia-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjnath-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjsip-core-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjsip-simple-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjsip-ua-i386-win32-vc6-debug.lib") #pragma comment(lib,"pjsua-lib-i386-win32-vc6-debug.lib") #pragma comment(lib,"libresample-i386-win32-vc6-debug.lib") #pragma comment(lib,"libspeex-i386-win32-vc6-debug.lib") #pragma comment(lib,"libsrtp-i386-win32-vc6-debug.lib") #pragma comment(lib,"libg7221codec-i386-win32-vc6-debug.lib") #pragma comment(lib,"libgsmcodec-i386-win32-vc6-debug.lib") #pragma comment(lib,"libilbccodec-i386-win32-vc6-debug.lib") #pragma comment(lib,"libmilenage-i386-win32-vc6-debug.lib") #pragma comment(lib,"libportaudio-i386-win32-vc6-debug.lib") #endif #ifdef NDEBUG #pragma comment(lib,"pjlib-i386-win32-vc6-release.lib") #pragma comment(lib,"pjlib-util-i386-win32-vc6-release.lib") #pragma comment(lib,"pjmedia-audiodev-i386-win32-vc6-release.lib") #pragma comment(lib,"pjmedia-codec-i386-win32-vc6-release.lib") #pragma comment(lib,"pjmedia-i386-win32-vc6-release.lib") #pragma comment(lib,"pjnath-i386-win32-vc6-release.lib") #pragma comment(lib,"pjsip-core-i386-win32-vc6-release.lib") #pragma comment(lib,"pjsip-simple-i386-win32-vc6-release.lib") #pragma comment(lib,"pjsip-ua-i386-win32-vc6-release.lib") #pragma comment(lib,"pjsua-lib-i386-win32-vc6-release.lib") #pragma comment(lib,"libresample-i386-win32-vc6-release.lib") #pragma comment(lib,"libspeex-i386-win32-vc6-release.lib") #pragma comment(lib,"libsrtp-i386-win32-vc6-release.lib") #pragma comment(lib,"libg7221codec-i386-win32-vc6-release.lib") #pragma comment(lib,"libgsmcodec-i386-win32-vc6-release.lib") #pragma comment(lib,"libilbccodec-i386-win32-vc6-release.lib") #pragma comment(lib,"libmilenage-i386-win32-vc6-release.lib") #pragma comment(lib,"libportaudio-i386-win32-vc6-release.lib") #endif
至此,pjsip就可以用在工程里面了,写的比较仓促,如果有遗漏的地方或问题请联系我。
2014-07-09后记:
一转眼已经离开VOIP三年半了,这三年多里有许多刚开始VOIP旅程的网友给我发mail询问pjsip的事宜,但是我离开上家公司的时候也只是刚刚开始,对pj也并没有多么深的了解,因此为了免于误人子弟,便将mail隐去了,希望这篇文章能助你将环境搭建起来,以后的事情真的是无力帮助了。
致歉。
PS。我现在做航电软件测试,感觉压力好大 >_<
相关文章推荐
- VC6 中编译使用 pjsip 的工程
- VC使用技巧:让你团队里所有人在编译工程时都要看你的代码注释
- 使用VS 2008(带sp1)编译VC 6.0的一个工程,出现下面的编译错误
- 关于VC60中创建MFC工程时, 使用了UNICODE选项后编译报错的解决方法
- VC6 编译并且使用wxWidgets - 我们用命令行方式build - 使用标准的工程方法
- VS2015使用pjsip库编译一个helloworld工程
- 使用ANT编译超过64K方法的Android工程
- 自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)
- MinGW如何使用VC编译的DLL??
- VC2010 中使用条件编译判断是32位还是64位编译模式
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
- 使用opencv3.20编译dnn模块,生成的库来加载caffe模型,从而在VS工程上跑。避坑锦集。
- 使用Rational Rose对VC工程进行反向
- 使用ant编译web工程步骤
- 使用VC编译perl-5.16.2,如何分析makefile
- VC的IDE在编译链接时做了些什么--- 逆向工程写自己的vcspawn
- Android Studio编译使用了Maven的工程卡住的解决方案
- 使用VC6.0打开VC工程出现“内存不足”的RUN TIME ERROR
- 使用最新版QQ的SDK工程编译报错问题
- VC6中使用VC2005编译的DLL问题