ffmpeg导致动态库无法导出接口的解决办法



这段时间在写个视频播放库,用到了ffmpeg。

播放库由多个模块组成,基本解码模块仅用于解码,不进行其它任何的工作,解码由ffmpeg库来完成。

这解码模块也是一个动态库.dll。写完代码之后在debug下可以顺利编译通过,也可以使用(使用该播放库的exe可以正常启动)。

然后把库发给其他同事,结果无法使用,自己查看release下的这个播放模块.dll,发现Dependency中提示“module does not appear to be a valid win32 module”,一个接口都没有导出,晕。

后对该模块进行逐步屏蔽,先把和ffmpeg有关的所有代码注释掉,编译后,接口导出没有问题,把把头文件、lib、声明打开编译,也没有问题,当把调用的函数打开时,编译出来的就不行了。

后去网上搜索,好不容易搜得一个贴子:

http://blog.csdn.net/bing87496988/article/details/25061659


解决办法:

在使用ffmpeg的工程上,点右键,属性->Linker->Optimization,第一项References中,选择“Keep Unreferenced Data (/OPT:NOREF)”,我的工程原来默认的是“Eliminate Unreferenced Data (/OPT:REF)”。

由于只release下有问题,所以debug我没有管,只在release下进行了修改,然后把注释全部恢复再编译,成功了,正常了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值