问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

诡异的连接错误error LINK2019 2001

发布网友 发布时间:2022-04-29 11:32

我来回答

1个回答

热心网友 时间:2022-06-26 23:56

路径一定要做正确~争取默认,全英文~~

造成LNK2001原因非常多,有时LNK2019就是造成LNK2001的原因~~

要尽量规范代码,以及路径正确性~~

一、代码问题
1.如果 LNK2001 诊断文本报告 __check_commonlanguageruntime_version 是无法解析的外部符号,在 function 中找到了未定义的外部符号 (symbol)。若要解决此错误,请提供符号定义或移除引用它的代码。
2.成员模板的定义超出了类的范围。Visual C++ 的一个*是,成员模板的定义必须完全位于封闭类内。
3.代码中大小写不匹配
4.如果项目使用函数内联,但在 .cpp 文件而非头文件中定义函数,则会导致 LNK2001。
5.试图引用没有外部链接的函数或数据会导致 LNK2001。
6.缺少函数主体或变量会导致 LNK2001。
7.调用参数类型与函数声明中的参数类型不匹配的函数会导致 LNK2001。名称修饰将函数参数合并到最终修饰函数名中。

8.错误包含的原型导致编译器需要没有提供的函数体,这样会导致 LNK2001。如果同时具有函数 F 的类实现和非类实现,请注意 C++ 范围解析规则。

9.在使用 C++ 时,将函数原型包含在类定义中但未能包含实现(该类的此函数的实现)会导致 LNK2001。

10.试图从抽象基类的构造函数或析构函数调用纯虚函数会导致 LNK2001。纯虚函数没有基类实现。

11.试图在函数范围外使用用该函数声明的变量(局部变量)会导致 LNK2001。

二、编译和链接问题
1.项目缺少对库 (.LIB) 或对象 (.OBJ) 文件的引用。有关更多信息,请参见用作链接器输入的 .lib 文件。

2.如果使用 /NODEFAULTLIB 或 /Zl,包含所需代码的库将不会链接到项目,除非已显式地包括了这些库。(在使用 /clr 或 /clr:pure 进行编译时,您将看到对 .cctor 的引用;有关更多信息,请参见 混合程序集的初始化。)

3.如果正在使用 Unicode 和 MFC,如果没有创建 wWinMainCRTStartup 的入口点,将在 _WinMain@16 上得到无法解析的外部对象;请使用 /ENTRY。请参见 Unicode 编程摘要。

4.将用 /MT 编译的代码与库 LIBC.lib 链接会在 _beginthread、_beginthreadex、_endthread 和 _endthreadex 上导致 LNK2001。

5.链接需要多线程库的代码(任何 MFC 代码或用 /MT 编译的代码)会在 _beginthread、_beginthreadex、_endthread 和 _endthreadex 上导致 LNK2001。有关更多信息,请参见下列知识库文章:

6.在用 /MD 进行编译时,因为所有的运行时现在都存放在一个 DLL 中,所以源中的“func”引用在对象中变为“__imp__func”引用。如果试图与 LIBC.lib 或 LIBCMT.lib 静态库链接,则将在 __imp__func 上得到 LNK2001。当不用 /MD 进行编译时,如果试图与 MSVCxx.lib 链接,则并非总是得到 LNK2001,但可能会有其他问题。

7.在生成应用程序的调试版本时与发布模式库链接会导致 LNK2001。同样,使用 /Mxd 选项(/MTd 或 /MDd)和/或定义 _DEBUG,然后再与版本库链接,将可能会产生无法解析的外部对象(同时还会出现其他问题)。将发布模式生成与调试库链接同样会导致类似问题。

8.将 Microsoft 库版本和编译器产品版本混合可能会有问题。新编译器版本的库可能包含早期版本的库中没有的新符号。可能需要更改搜索路径中的目录顺序,或将它们更改为指向当前版本。

9.使用库文件选择下的“工具”|“选项”|“项目”|“VC++ 目录”对话框,可以更改搜索顺序。项目的“属性页”对话框中的“链接器”文件夹可能也包含可能已过期的路径。

10.当安装了新的 SDK(可能在不同的位置),但没有将搜索顺序更新为指向新位置时,可能会出现此问题。通常情况下,应将新 SDK 的 include 目录和 lib 目录的路径放在默认 Visual C++ 位置的前面。另外,包含嵌入路径的项目可能仍然指向旧路径,这些路径是有效的,但对于安装到不同位置的新版本所添加的新功能已过期。

11.编译器供应商之间、甚至同一编译器的不同版本之间当前没有 C++ 命名标准。因此,链接用其他编译器编译的对象文件可能无法生成相同的命名方案,从而导致错误 LNK2001。

12.在不同模块上混合内联和非内联编译选项会导致 LNK2001。如果创建 C++ 库时打开了函数内联(/Ob1 或 /Ob2),但描述函数的相应头文件的内联是关闭的(没有 inline 关键字),则将发生此错误。若要防止此问题,请在要包含到其他文件中的头文件中用 inline 定义内联函数。

13.如果使用 #pragma inline_depth 编译器指令,请确保具有 设置为 2 或更大的值,并确保使用 /Ob1 或 /Ob2 编译器选项。

14.在创建纯资源 DLL 时省略 LINK 选项 /NOENTRY 将导致 LNK2001。

15.使用不正确的 /SUBSYSTEM 或 /ENTRY 设置会导致 LNK2001。例如,如果编写基于字符的应用程序(控制台应用程序)并指定 /SUBSYSTEM:WINDOWS,您将得到无法解析的 WinMain 外部对象。有关这些选项和入口点的更多信息,请参见 /SUBSYSTEM 和 /ENTRY 链接器选项。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 CAD2014版保存时总出现超出了对象大小限制 javascript 怎么验证是否为身份证格式 CAD打开之后就报错 cad无法解析对象或超出了值限制 大三该怎样准备考研?? 大三考研寒假如何复习 现在大三想准备考研,应该做些什么? 2022考研,大三假期里应该怎么准备? 马上大三了,准备大四考研,我现在该做什么 准备考研 大三上该做什么? 我现在大三,准备明年的考研,寒假开始复习,都应该复习什么?怎么复习? 现在大三,准备考研,寒假需要干什么。 准备考研,大三寒假怎么做? 大三应该为考研做什么准备? 微信公众号标题上后面的图片怎么弄得?求解答 输尿管结石碎石价格要很多钱吗 输尿管结石碎石后有没有可能石头在尿道里没牌出来 输尿管结石激光碎石好不好? 输尿管结石如何排出? 输尿管结石:详情见图 大家帮我看看这个程序,我觉得没有错呀,可是链接时总是显示出错 线程已经通过之前的创建文件指令,将文件创建并打开,但是在进行写数据提... 后处理器错误-Broken connection是怎么回事 无法显示网页,错误代码:500 这是怎么回事?应该怎么办? 详解Java语言中内存泄漏及如何检测问题 (1) 为什么springmvc的控制器中方法不能没有返回值,否则报错 Autocad 2012 移动对象时,出现:无法融入一个或多个约束对象。 是什么意思,如何解决? 张宸赫名字的意义是什么?? 拼多多商品收藏怎么屏蔽不喜欢的东西 蘧张宸赫这个名字好不好? 如何使用python解析超大XML文档 看五行、起名2014.01.20.时间21:08男孩 在拼多多产品不放心不要了以后。商家给我炸信息怎么办? 起名测试 怎样在拼多多上发文字广告图不会被屏蔽? 您好!请问宸字五行书什么?我家宝宝男,张宸赫和张铄宇这2个名字哪个好?张宸赫总体分高? 张宸熙,,,,张宸赫,,,张宸鸣,,,这三个名字那个好听,请大家给个意见。 ★帮忙给孩子挑选个名字。谢谢! 男宝宝名字 拼多多哪里都有它,太烦人了!有没有办法在手机中屏蔽?