1.今天本来是准备把wmmx手册看一边,并准备移植代码,不过后来ipp库不会过期使得这个想法又可以实现了,所以下午下载了一个ipp for pca的的库,并安装了.不过遇到了问题是安装后没有产生静态库文件,没办法.在网上搜了一大圈后只好采用比较麻烦的方法,就是调用动态库的 方法.这跟windows下有很大的不同.主要是要在程序中包含dlfcn.h这个头文件,然后调用四个函数.
a,首先是声明三个变量
void *handle; //返回动态库中函数的地址
char *error; //报告错误信息
void handle; //句柄
b,然后调用库打开函数dlopen()
handle=dlopen("./ippVC_WMMX50LNX_d.so",RTLD_LAZY);
RTLD_LAZY表示推迟每个函数实际的载入操作,也可以为RTLD_NOW,表示让所有的库都载如内存,立即可用.这两个标志可以和RTLD_GLOBAL进行与操作,它允许库中所由外部引用都抗议通过调用其他动态库中找到的函数解析出来, 当然其他动态库也必须是已载入的动态库.
c,接着调用函数dlerror()
if(error=dlerror()){
printf("%s/n",error);exit(1);
}检查出错信息
d, 然后在库中找到对应的函数符号,dlsym()并把它赋给函数指针
ippiInterpolateLuma_H264_8u_C1R = dlsym(handle,"ippiInterpolateLuma_H264_8u_C1R");
if(error=dlerror()){
printf("%s/n",error);exit(1);
}检查出错信息
e,然后 调用函数,并检查出错信息
f,关闭动态库dlclose(handle);
具体程序如下:(这个是h264插值的程序,程序结果有误&#x