error LNK2019: 无法解析的外部符号

本文介绍了如何处理在使用外部库时遇到的LNK2019错误,包括设置附加包含目录、附加库目录、附加依赖项以及处理C与C++编译兼容性问题。通过在头文件引入前使用extern "C"块,可以避免因编译器对C函数名修饰导致的链接错误。
        在调用他人写好的库函数(比如OpenCV库、VlFeat库或FFmpeg库)时,我们通常在工程的属性中添加以下3个步骤:

   1. 属性->配置属性->C/C++->附加包含目录->添加库的include路径,比如“.\include”;

2 属性->配置属性->链接器->附加库目录->添加库的lib路径,比如".\lib";

3 属性->配置属性->链接器->输入->附加依赖项,比如"avcodec.lib";

4 如果是Debug版本,则在debug文件夹下将需要的dll文件复制进来;或者将dll文件复制到“C:\Windows\System32”文件下(当计算机系统是32位时)。


一般情况下,若以上步骤正确配置,则调用库函数则不会出现错误。

而有时候,编译时会出现如下问题:“error LNK2019: 无法解析的外部符号”,这个error产生的原因是由于库文件由C编成,而编译系统是C++,如果要对编译器提示使用C的方式来处理函数的话,则要使用extern "C"来说明。

举例说明:

将以下:

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <stdio.h>

改为:

extern "C"
{

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <stdio.h>
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值