这部分主要是引入第三方库,还有就去去除无关的测试代码。
7. 引入第三方库
必须引入的第三方库为zdll.lib,这个库在网上可以下载到,如若不加入这个库,很多的函数将链接不到。还有在avcodec文件夹下面以lib打头的文件都是为引入第三方库而进行的接口封装,以适应ffmpeg去调用的相关代码。最重要的例如libx264,libmp3lame.lib libfdk_aac等。我的x264采用我自己用vs2008编译的版本,其它的库也基本上采用vs的版本。暂时不想加入的库,例如libspeex等可以把这些代码移出。
8. 去除冗余和暂时不相关的代码。
之前我们把所有的c文件都添加进来,其实有些是没有必要的。例如有些c文件里面有一个main函数,它仅仅是为了测试某个函数接口应用而存在的,这样的c文件是可以移除。另外,文件名包含template关键字的文件也必须要移除,因为这样的文件已经被include到其它文件里面的。如若不移除,单独编译这个文件会产生大量的编译错误。另外与网络相关的模块也可以暂时移除,当然也可以在tcp.c文件里面加入windows上的库ws2_32.lib解决链接错误。
9. 初始化全局结构体变量
在前面一部分,对于结构体的初始化,我们用了一个函数去做。所以,在程序刚刚起来的时候,必须调用这些函数去初始化所有的全局结构体变量。由于这样的结构体变量初始化函数太多太多,不太可能用复制粘贴的方法。一种可行的方法是,在vs开发环境里面切换到class view选项里面找到Global functions and variables,选中所有的初始化结构体的函数,然后复制到一个文本文件里面,再写一个简单的正则表达式,将其转换为函数调用的格式。前面提到的文件g_var_func_init.c就是自己添加的这些函数调用的代码,用以初始化全局结构体变量。
综上所述,排除完所有的编译错误和链接错误,你就可以在vs2008下面调试ffmpeg的代码了。