-
Visual studio2019 中编译c++出现LNK2019,LNK2001: 无法解析的外部符号,包含如下情况
2020-03-22 15:24:55错误信息报错如下 1.有可能是采用lib库的平台配置错误,打开项目属性发现当初配置的是Release x64,而执行代码...类似前面提示(xxx.lib,xxx.obj等)libcrypto.lib: error LNK2001: 无法解析的外部符号,我们查找返...错误信息报错如下
1.有可能是采用lib库的平台配置错误,打开项目属性发现当初配置的是Release x64,而执行代码是Debug x64
修改执行代码的配置和平台即可,执行成功
2.编译器会出现“LNK2001: 无法解析的外部符号”错误。类似前面提示(xxx.lib,xxx.obj等)libcrypto.lib : error LNK2001: 无法解析的外部符号,我们查找返现这个库在如下位置
这个是最常见的问题,具体步骤:
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib (libcrypto.lib)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、添加附加库目录和附加依赖项
-
windows 编译dshow相关程序报错error LNK2001 无法解析外部符号 _IID_IPin
2017-05-03 13:27:46错误源码: 背景:用到#include编译虚拟摄像头模块,编译成功,链接时报了如上错误 原来是由于没有没链 dx 的库 解决方案:错误源码:背景:用到#include<dshow.h>编译虚拟摄像头模块,编译成功,链接时报了如上错误原来是由于没有没链 dx 的库解决方案: -
VS编译器 :LNK链接错误汇总:LNK2001 / LNK2005 / LNK2019 / LNK1120
2019-12-10 15:05:14VS编译期间遇到各式各样的链接LNK错误,作一汇总: ...所以只能通过编译,连接不成功。 2.另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include...VS编译期间遇到各式各样的链接LNK错误,作一汇总:
LNK1120: 1 个无法解析的外部命令
这个问题的原因是有头文件,但是找不到实现。
有两个原因:1.只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp文件中的)。所以只能通过编译,连接不成功。
2.另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。
LNK2001: 无法解析的外部符号的几种情况
一般来说,我们引用第三方库时,需要进行指定依赖项配置,若没有进行相关配置,则编译器会出现“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、添加附加库目录和附加依赖项
LNK2005:已经在.obj中定义
比如:head1.h中定义了全局变量int a = 10;在一个类的头文件class.h中包含了头文件head1.h如:include “head1.h”
于是我将include "head1.h"从class.h中移到了class.cpp中,问题解决。
分析,因为class.cpp中include “class.h”,class.h中include “head1.h”,发现没,会造成head1.h的重复引用,虽然用pragma等也无法解决,移到class.cpp中,它生成obj文件时,只引用一次,问题解决。
LNK2019
导致LNK2019的常见问题:(1)未链接的对象文件或包含符号定义的库
(2)符号声明的拼写不与符号的定义相同
(3)使用了函数,但类型或参数数目不匹配函数定义
(4)声明但未定义的函数或变量
(5) 调用约定是函数声明和函数定义之间的差异
(6)符号定义在c文件中,但未使用extern C在c++文件中声明
(7)符号定义为静态,并随后被外部文件引用
(8)未定义类的静态成员
(9) 生成依赖项仅定义为解决方案中项目依赖项
(10)第三方库问题和Vcpkg
vcpkg 是一种命令行包管理器,可极大简化 Windows 上第三方库的购置与安装。 如果项目要使用第三方库,建议通过 vcpkg 来安装它们。 vcpkg 同时支持开源和专有库。 已测试 vcpkg 公共目录中所有库与 Visual Studio 2015 及 Visual Studio 2017 的兼容性。通过 vcpkg 可以消除或最大程度减少不匹配二进制文件的存在风险及它可能造成的问题。
常见修改方法:
a.改为静态CRT
Configuration Properties->C/C+±>Code Generation->Runtime Library->
debug版选/MDrelease版选/MT
b.严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 WinMain,该符号在函数 “int __cdecl __scrt_common_main_seh(void)” (?__scrt_common_main_seh@@YAHXZ)中被引用。
WinMain是Win32项目的入口,所以把应用程序改为控制台类型
考虑可能的原因:
[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.
[1]只写了类声明,但还没有写实现类,造成调用时无法解析
[2]声明和定义没有统一,造成链接不一致,无法解析
[3]没有在项目属性页的链接器的命令行选项加入相应的类包。
[4]没有在c++包含目录和库目录加入相应的类包路径(.h和.lib),.h一般在src文件夹中,.lib一般在lib文件夹
[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件
[6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。[7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库
[8]出现如下错误的原因一般是动态库没有包进来。__imp
ProjectRun.obj : error LNK2019: 无法解析的外部符号 __imp__StartHistoryLocalModule,该符号在函数 “protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)” (?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用[9]error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW
工程属性,C/C++,代码生成,运行时库选择MDd,[9]无法解析的外部符号"__declspec(dllimport) public: int __thiscall HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadProps const &,struct HiRTDB::SBaseReadValues &)" (_imp?GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseReadValues@2@@Z),该符号在函数"public: int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps const &,struct HiRTDB::SStringReadValues &)" (?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues@2@@Z) 中被引用
原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。
[10]在 项目属性\链接器\输入\附加依赖项 中 没有添加***.lib
-
Win32下编译OpenSSL成功后,使用静态lib,出现6个 LNK2001: unresolved external symbol ??
2013-07-09 09:11:35再运行“nmake -f ms\nt.mak test” 也有 [color=#0000FF]“passed all tests”[/color]被打印出来,说明编译都是成功的。 然后一段测试代码: #include <stdio.h> #include "openssl/ssl.h" #... -
由于编译和链接的设置而造成的LNK2001
2010-10-02 12:15:00今天调试一个程序在同学电脑可以运行 在我的电脑却不可以 用了很多方法 上网查询 说是因为链接出了问题 就是可能没有包含某个库文件或者是所包含的库...于是 将V7.0中的lib和include 全部换掉之后 运行果然成功今天调试一个程序
在同学电脑可以运行 在我的电脑却不可以 用了很多方法 上网查询 说是因为链接出了问题 就是可能没有包含某个库文件
或者是所包含的库文件有问题 。于是 将V7.0中的lib和include 全部换掉之后 运行果然成功
-
gsl出现LNK2001 LNK1120问题排查
2018-04-09 09:42:39加上windows.h这个头文件,没有这个问题前提:编译gsl库成功,用其他功能正常,但是使用 gsl_rng.h头文件,出现问题;使用语句gsl_rng_alloc(gsl_rng_env_setup()),这样没问题,gsl_rng_env_setup()设置的是默认gsl... -
2016.04.24 LNK2019、LNK2001(存坑)
2016-04-24 16:59:001. 问题描述 使用Qt创建"Empty qmake Project"时,添加main.cpp文件,包含(#...两个文件,在main函数中创建并使用了QApplication和QLabel的变量(对象),编译成功,而链接出错,报LNK2019和LNK2001两个错误。... -
C++进阶之error LNK2001
2018-08-30 15:48:27比较让人气愤的是,运行书上的代码也能出错?我不要脸的吗?而且还是重复学习的一章,之前在笔记本上都运行成功,然后换了台电脑之后就不行...所以只能通过编译,连接不成功。 2.另一个原因是函数的声明和实现都放在... -
对于LNK2019,LNK2001的错误总结
2009-01-03 17:28:00我的错误主要出现在库的调用。 关于动态静态链接库其实很简单,操作步骤也比较少。...编译生成了lib文件就是成功的第一步。 这个lib文件,我们要将他添加到vc能够找到的文件夹中。如果安装在自己的工程文件夹 -
mfc 中调用自定义DLL链接时出现error LNK2001错误
2011-05-15 18:31:00在mfc中:调用自定义DLL链接时出现:error LNK2001错误unresolved external symbol,程序编译本来没有什么问题,只是在链接时出错,此情况可能是dll工程设置不正确,本机上把项目属性Configuration Properties->... -
LNK2001,作业题,绝望,求大佬解答
2018-12-10 15:37:11LNK2001 无法解析的外部符号 "class person * * p_per" (?p_per@@3PAPAVperson@@A) 图书馆 D:\C++\实验\图书馆\图书馆\源.obj 1 不知要怎么改,看网上的解释是因为编译环境,但我觉得错误里有这个class person **... -
error LNK2001: 无法解析的外部符号 _sqlite3_api问题的解决
2013-01-15 15:32:33error LNK2001: 无法解析的外部符号 _sqlite3_api问题的解决 在win7的vs2008中,编译spatialite的dll和lib文件,在后来调用lib和dll的时候,发现了问题,原来是在libspatialite.def中没有将这个sqlite3_api... -
原:.obj : error LNK2001: 无法解析的外部符号 __imp__
2010-05-25 03:45:00我把一个编译成功的VC2008下的工程头文件和.cpp文件放到新建的另一个目录,并且,按照原工程,把 工具->选项->项目和解决方案中的响应目录都已经改好了。后来编译还是有“连接错误”=.obj : error LNK2001: 无法解析... -
error LNK2001: unresolved external symbol "public: __thiscall CWinAppEx::CWinAppEx(int)" (?...
2014-11-14 14:50:001.这个是网上找的别人的解决办法,本人没试过 解决办法: 网上大多说的这类似问题是解决自定义类的,可是这个连接是系统CWinAppEx,网上查了很久也没找到原因,...2. 我是直接用2010打开编译了下,发现可以成功... -
GMSSL在windows上编译成功的环境有什么要求呢?
2020-11-30 13:46:40libcrypto-1_1.def : error LNK2001: 无法解析的外部符号 EVP_get_ciphernames libcrypto-1_1.def : error LNK2001: 无法解析的外部符号 EVP_get_digestnames libcrypto.lib : fatal error LNK1120: 2 个无法解析的... -
计算机图形学的问题,运行时编译成功,但是运行不出,老出以下错误
2016-04-07 13:50:13LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/graphic1.exe : fatal error LNK1120: 1 unresolved externals 执行 link.exe 时出错. graphic1.exe - 1 error(s), 0 ... -
COM控件编译连接成功 但手动编译总是失败 请高手指点下
2015-08-21 12:09:30Util.obj : error LNK2001: 无法解析的外部符号 "class std::basic_ostream,struct std::char_traits<char> > std::cout" (?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A) Server.dll : fatal error ... -
一个C++编译问题(数组实现的线性表),提示错误 Lnk2019,Lnk1120,具体在下,谢谢大家
2015-10-28 14:03:451>example2_1.obj : error LNK2001: 无法解析的外部符号 "void __cdecl reverse(class SqListClass<int> &)" (?reverse@@YAXAAV?$SqListClass@H@@@Z) 1>E:\TP\算法\算法导论\练习\测试\list\Debug\list.exe : fatal ... -
pybind.obj : error LNK2001: 无法解析的外部符号 "class at::Tensor __cdecl nms_rotated(class at::...
2021-01-03 23:04:07pybind.obj : error LNK2001: 无法解析的外部符号 "class at::Tensor __cdecl nms_rotated(class at::Tensor,c lass at::Tensor,class at::Tensor,class at::Tensor,float,int)" (?nms_rotated@?... -
Windows10+VS2013环境下Dlib库的编译与使用
2017-02-12 09:36:04最开始编译时按照网上普遍使用的CMAKE方法,可以编译成功,但是在使用dlib.lib库时候总是会报Error LNK2001的错误,怎么搞都无解,最后选择源码编译的方法成功执行。 准备 下载dlib库源码:... -
QtCreator(vs2015库)编译动态库,无法解析的外部符号问题
2020-07-03 10:50:15编译成功。 2. 使用1.中编译的静态库,调用其函数,再使用QtCreator 5.11 (vs2015) 编译成64位release动态库。 编译失败,很多库函数无法解析。错误如下(下面几行摘要,之后附图): libcalibration.obj:-1: ... -
VS2010编译Gh0st3.6(三)
2012-09-20 23:43:36三.解决连接错误 到现在为止,所以代码已经没有任何错误了,但在Gh0st还是编译不成功,而错误全部是在连接错误上。...1>CJ60StaticLib.lib(CJListView.obj) : error LNK2001: 无法解析的外部符号 “pro -
nana 编译ok,但是 helloworld 程序 报错.....求助
2020-11-29 07:53:17ConsoleApplication1.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall nana::detail::event_base::remove(struct nana::detail::event_handle_impl *)" (?remove@@) 1&... -
依然无法编译icu,还有打包lib建议不要使用中文路径如“D:\用户数据\Documents\”
2020-11-22 13:12:55putil.obj : error LNK2001: 无法解析的外部符号 __imp<strong><em>_stdio</em>common_vsprintf 1>uloc.obj : error LNK2001: 无法解析的外部符号 </strong>imp____stdio_common_vsprintf 1>....\bin\icuuc60.... -
vs2008编译报错如下,求助!
2015-01-22 06:34:581>QAxContainerd.lib(qaxtypes.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QString::fromWCharArray(unsigned short const *,int)" (__imp_?... -
C++项目调SpiderMonkey 问题
2020-12-31 15:09:18编译成功后在c++项目中使用报如下链接错误 <p>1>js_static.lib(Unified_cpp_js_src44.obj) : error LNK2001: 无法解析的外部符号 __imp__moz_arena_malloc 1>js_static.lib(Unified_cpp_js_src... -
自己动手编写一个VS插件(七)
2013-10-08 19:28:53今天在添加ATL控件时出现一个“未能返回新代码元素”的错误,如下图: 解决办法是删除删掉ncb文件... 成功添加一个ATL控件后,编译工程后出现一些链接错误:1>Connect.obj : errorLNK2001: 无法解析的外部符号_IID -
两天来移植CxImage总结
2011-10-18 18:50:52首先明确一点:移植cximage用的vs2005整个环境的配置和...我编译PC版的刚开始编译成功了所有的库,新建了一个程序调用CxImage::Load 和 CxImage::save时出错,error LNK2001: unresolved external symbol -
Xerces链接错误原因之/Zc:wchar_t-设置不一致
2016-11-21 01:23:00今天程序需要使用Xerces作为xml文件的解析与序列化工具,使用的是Xerces2.7.0版本。具体编译教程如下: ...error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static wchar_t const * ... -
QtQuick学习整理
2016-07-28 21:18:361 使用qmlRegisterType注册cpp的类到qml中去时,出现LNK2001错误,提示找不到要导入到qml中的类, 解决方法: 把工程的debug文件夹删除,重新编译,成功 链接: ...
-
139网站可用性测试报告.pdf
-
翻译:《实用的Python编程》03_00_Overview
-
Docker从入门到精通
-
qBittorrentEE_v4.3.1.11_便携版.zip
-
【考研初试】安徽建筑大学501建筑设计考研真题库资料
-
只需要几秒 超强win10关闭自动更新工具.rar
-
2021-02-27
-
apache-jmeter-3.1.7z
-
[蓝桥杯] 填算式 python解法
-
学生管理系统(c语言)
-
RTP协议
-
JS//DOM(先占坑)
-
社交运营数据挖掘.ppt
-
数据研究必备:国内40个免费数据源.pdf
-
html传值到php
-
常见面试题-Spring Boot/ Spring Cloud
-
MySQL 四类管理日志(详解及高阶配置)
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
MySQL 高可用工具 heartbeat 实战部署详解
-
华为-学英语