faad2在C++环境下的运行依赖库

继《将faad2转码方法移植到C++》之后,在将转码应用发布到Win7上的时候,总是出现“CLR20r3”的错误,这是一个缺少运行时环境的错误,使用Depends复研究之后,发现仅仅是简单的转码应用就需要这些动态库:ATL110.dll、GPSVC.dll、IESHIMS.dll、MFC110.dll、MSVCP110.dll、MSVCR110.dll、SYSNTFY.dll。

分析为什么需要这么多库的原因,得到如下结论:

(1)我用VS2012将faad2封装为ATL库,并且添加了支持MFC特性,所以需要ATL110.dll、MFC110.dll、MSVCP110.dll、MSVCR110.dll这些ATL和MFC库,而其中MFC110.dll又需要IE组件库IESHIMS.dll;

(2)项目需要组策略相关的GPSVC.dll,这个库依赖SYSNTFY.dll;

(3)项目使用x86平台编译(faad2在x64环境下需要一些修改),库编译为Release;

(4)在使用环境中利用管理员身份注册libFaad2ATL(我生成ATL库后的名字)。

经过上述设置后,已经可以成功使用动态库进行转码了。

最后得出的关键点:编译环境为32位Release,并且各个库要保持一致。如有不恰当的地方欢迎斧正。

猜你喜欢

转载自blog.csdn.net/pigautumn/article/details/73163185
今日推荐