背景
瑞阳科技工作室有一个ocx产品,这个产品的功能是使用GB28181信令从GB28181平台中获取视频码流,然后将视频渲染在Windows桌面上,但是近期由于产品升级我们将客户机的电脑全部升级为windows10,发现一个问题: 之前在windows7平台下可以正常注册的ocx在Windows10下无法完成注册,导致ocx无法使用。根据dependence工具分析的结果,我们猜测应该是从ffmpeg官网上下载的库在Windows10平台下无法正常使用,因此我们打算在win10平台下手动编译一次ffmpeg用以解决该问题
我们知道Windows平台下生成dll动态库文件有两种方式,一种是在源码中增加宏__declspec(dllexport)和__declspec(dllimport)。另一种方式是怎加模块定义文件*.def, 而ffmpeg源码中并没有怎加__declspec(dllexport)和__declspec(dllimport)这两个宏,所以想要在Windows平台下编译生成dll库,我们只能通过增加模块定义文件*.def实现。
准备
ffmpeg4.0.2源码
vs2015
生成
我们知道想要导出动态库,必须将要使用的函数名添加在*.def文件中,但是ffmpeg中函数那么多,一个一个找太辛苦,所以我们窃取一点别人的劳动成果,从"https://github.com/ShiftMediaProject/FFmpeg" 中SMP文件夹下面获取所需的def文件。
然后创建sln和project,最后按照Windows平台下正常编译dll的步骤去生成dll动态库文件即可。