LNK2001: 无法解析的外部符号的几种情况

LNK2001: 无法解析的外部符号的几种情况errorLNK2001:无法解析的外部符号无法解析几种情况:1>MSVCRT.lib(MSVCR90.dll):errorLNK2005:_printf已经在libcurl.lib(pqueue.obj)中定义1>MSVCRT.lib(MSVCR90.dll):errorLNK2005:_fprintf已经在libcurl.lib(pem_lib.o…

大家好,又见面了,我是你们的朋友全栈君。

一般来说,我们引用第三方库时,需要进行指定依赖项配置,若没有进行相关配置,则编译器会出现“LNK2001: 无法解析的外部符号”错误。

这个是最常见的问题,具体步骤:
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项

若已经按照上述步骤进行配置,但编译器还是报错,可能情况如下:

1.编译lib库和引用lib库平台不一致

lib库采用的编译平台和引用该lib的工程的编译平不兼容导致的。比如项目采用vs2008编译,而该lib是用2010编译的,亦或者项目采用vs2015平台,而lib是vs2008编译的也可能导致链接失败。

2.编译lib库和引用lib库选项不一致情况

1、一个lib库采用“多线程 DLL (/MD)”配置,而另外一个项目采用“多线程(/MT)”编译配置
2、一个lib库采用“使用 Unicode 字符集”配置,而另外一个项目采用“使用多字节字符集”编译配置
3、一个lib库采用选择“release 版本 ”配置,而另外一个项目采用选择 “debug 版本 ”编译配置
4、一个lib库采用“wind32平台 ”配置,而另外一个项目采用“wind64平台 ”编译配置

3.没有添加指定预编译宏

在使用curl静态库时,却遇到了编译链接错误:
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_init
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_setopt
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_perform
1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_cleanup

解决方法是,在自己的项目属性中添加一个预编译宏,CURL_STATICLIB,

为了避免遇到以上问题建议:

1、引用第三方库时,确认lib库是否使用相同编译平台
2、确认编译选项是否一致。比如运行时库和字符集
3、若需要则添加指定编译宏
4、添加附加库目录和附加依赖项

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153494.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RTP协议–图文解释

    RTP协议–图文解释一、什么是RTP数据传输协议RTP,用于实时传输数据。RTP报文由两部分组成:报头和有效载荷。二、RTP的会话过程当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数…

    2022年6月28日
  • chrome加载慢_多线程有什么用

    chrome加载慢_多线程有什么用谷歌浏览器采用的是单线程下载,想要提高下载速度,就得采用多线程的下载方式,Chrome默认还是单线程下载,如果想要谷歌多线程下载,就要手动开启,下面听MacW小编娓娓道来,介绍如何开启Chrome多线程下载!先来看看开启前的下载速度,(同一个文件)看到了吧!默认情况下,只有左右,远没有到达带宽的上限,接下来跟着小编一起开启这个隐藏的功能,国产Chrome内核的浏览器通通适用,包括前段时间推送的新版Edge也可以。chrome://flags/#enable-parallel-downloading

    2022年10月8日
  • 通用高级模组修改器(魔兽世界改模型插件)

    准备工作:所需软件WINHEX,百度一下就有,华军什么的也可以。还有就是反向十六进制代码转换器。另外还需要一个代码查询网站http://wow.allakhazam.com/。打开网站点“search”。然后将语言选择为中文,输入要查询的装备的名称查询。然后点所需装备的连接,在出现的网页中点XML。拖动网页,会看见一片数字,其他的不管,只需要2个displayinfo中间的数字,例如,逐风剑的就是…

    2022年4月16日
  • RTSP协议解析_RTP协议

    RTSP协议解析_RTP协议RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。流服务器通过一个SDP描述来进行反馈,反馈信息包括流数

    2022年11月3日
  • DB2维护手册

    DB2维护手册

    2021年5月7日
  • docker启动mysql镜像命令_ubuntu20修改ip命令

    docker启动mysql镜像命令_ubuntu20修改ip命令1、拷贝mysql离线包1.1、将mysql-57.gz安装文件拷贝到linux2、安装mysql2.1、进入mysql安装包目录2.2、加载mysql镜像dockerload-imysql-57.gz2.3、查看镜像dockerimages2.4、创建mysql容器启动mysql镜像,创建一个mysql容器dockerrun-d–namemysql-p3307:3306-eMYSQL_ROOT_PASSWORD=1234569e64d176cd

    2022年9月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号