未加 extern "C"引发的错误

#include "libavformat/avformat.h"// 引用av_register_al()函数的.h

 #pragma comment(lib,"avformat.lib")// 引用av_register_al()函数的.lib

工程里配置avformat.h包含的目录



工程里配置avformat.lib包含的目录


void CtestDlg::decode(void)

{

  av_register_all();// 初始化libavformat/libavcodec 

...

}

出现链接错误:


错误原因:

av_register_all()函数是用C编写的,因此在包含#include时,要加在extern "C"{},这样VS在编译的时候在av_register_all()函数名前不会加上其他字符。这个错误导致的原因是:编译时,由于没有加extern "C",所以av_register_all()函数有可能被编码成了abc_av_register_all(),所以在链接avformat.lib时,avformat.lib里找不到abc_av_register_all()出错。

修改后的代码:

extern "C"
{
 #include "libavformat/avformat.h"
}

 #pragma comment(lib,"avformat.lib")

void CtestDlg::decode(void)

{

  av_register_all();// 初始化libavformat/libavcodec 

...

}

编译链接成功。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值