如何对Intel IPP库进行静态链接

来源:互联网 发布:iar编译51单片机怎么样 编辑:程序博客网 时间:2024/06/05 13:32

在多媒体codec方面,IPP库公认是高性能的库,而且价格也不贵,对发布也没什么限制。我们的客户强烈需要G729的codec,最近我尝试使用IPP库,效果确实不错。
不过最新IPP(v7.1)的全部运行时动态库多达85个,225M,如果每次发布都要带这么多dll,就算带来所谓的自动识别CPU并进行优化的好处,也太麻烦了。
静态方式连接后的程序只是多了不到2M,是比较好的发布方式。可要顺利配置并编译并不容易,我为此查了不少资料,下面把关键点写出来,希望大家少走些弯路。

注意,我使用的编译器是VC++2008,其他版本的vc++应该大同小异。

步骤:
1、下载并安装IPP环境,这个简单,不描述了。
2、下载Intel IPP的Samples包。
   手工打开ipp-samples\speech-codecs\codec\speech下的vs项目(设置IPPROOT环境变量并运行build_ia32.bat也能编译, 但要修改makefile有点麻烦)
   设置ipp包含文件的路径
   设置ipp库的路径
   设置C++/代码生成/运行时库 为 “多线程/MT”,这个很关键,否则应用程序在使用这个Speech.lib时会出现一堆链接错。
   在配置的C++/命令行/附加选项 增加
  /D_IPP_SEQUENTIAL_STATIC
   然后生成Release版本的speech.lib  
3、自己的应用程序
   步骤和2差不多,如果是静态链接,除了"usc.h",还要包含:
 #include "ippcore.h"
   在程序初始化的地方,增加一行:
 ippStaticInit();

   在程序的最后增加下面的链接指示:
  #pragma comment(lib, "ippi_l.lib")
  #pragma comment(lib, "ipps_l.lib")
  #pragma comment(lib, "ippcore_l.lib")
  #pragma comment(lib, "speech.lib")

 

做完上述步骤再编译你的程序就大功告成了。