LNK2019的常见情况及解决方法

LNK2019的常见情况及解决方法导致 LNK2019 的常见问题 1 未链接的对象文件或包含符号定义的库 2 符号声明的拼写不与符号的定义相同 3 使用了函数 但类型或参数数目不匹配函数定义 4 声明但未定义的函数或变量 5 nbsp 调用约定是函数声明和函数定义之间的差异 6 符号定义在 c 文件中 但未使用 externC 在 c 文件中声明 7 符号定义为静态 并随后被外部文件引用 8 未定义类的静态成员 9 生成依赖项仅定义为解决方

导致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版选/MD

release版选/MT

b.严重性 代码 说明 项目 文件 禁止显示状态

错误 LNK2019 无法解析的外部符号 WinMain,该符号在函数 “int __cdecl __scrt_common_main_seh(void)” (?__scrt_common_main_seh@@YAHXZ)中被引用。

WinMain是Win32项目的入口,所以把应用程序改为控制台类型

[7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库

[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




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

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

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


相关推荐

  • C语言malloc函数的功能及用法

    C语言malloc函数的功能及用法关于C语言malloc函数函数介绍应用举例1应用举例2函数介绍malloc(memoryallocation) 中文名称:动态内存分配用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。应用举例1关于C语言动态申请数组(整形数据类型)空间的应用#include<stdio…

    2022年6月9日
    40
  • 原码、补码以及正数/负数的左移和右移

    原码、补码以及正数/负数的左移和右移文章目录一 原码和补码 1 1 原码表示法 1 2 补码表示法二 C 正数 负数的左移和右移 2 1 正数的左移和右移 2 2 负数的左移和右移 2 3 扩展 对正负数都适用 下面以正数为例 一 原码和补码对数据用 n 位二进制数编码后 机器数 X 表示为 X XnXn 1Xn 2 X2X1X X nX n 1 X n 2 X 2 X 1 X Xn Xn 1 Xn 2 X2 X1

    2025年11月1日
    2
  • MySQL存储过程(PROCEDURE)(一)「建议收藏」

    MySQL存储过程(PROCEDURE)(一)「建议收藏」一、定义与目的:定义:存储过程是数据库SQL语言层面的代码封装与重用(是数据库中存储复杂程序,以便外部程序调用的一种数据库对象);目的:我们为了完成特定功能的SQL语句集,经编译创建并保存在数

    2022年7月2日
    33
  • 常用网管工具_网管系统

    常用网管工具_网管系统1、ping(你懂的)2、df-h(查看磁盘使用情况)3、top(查看cpu使用情况,按“1”可以查看各个cpu详情)4、pstree(树形显示进程及同名进程的数量)5、vmstat[m][n](显示服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。间隔m秒钟显示一次,一共显示n次)6、nload(监视网络吞吐量)7、ps…|grep

    2022年10月6日
    2
  • golang 字符串 转 时间类型[通俗易懂]

    golang 字符串 转 时间类型[通俗易懂]实例如下:local,_:=time.LoadLocation(“Asia/Shanghai”)showTime,_:=time.ParseInLocation(“2006-01-0215:04:05″,”2021-11-0711:34:00”,local)fmt.Println(showTime)showTime,_=time.ParseInLocation(“2006-01-02″,”2021-11-07”,local)fmt.Println(showTime

    2022年5月8日
    38
  • 最新tracker服务器网站_服务器网速测试

    最新tracker服务器网站_服务器网速测试Tracker服务器是对于BT下载必须的,网上随便搜索一下就有很多Tracker服务器列表,一个服务器文件少则几十个,多则上百个,但”杂乱无章”,要不就是用不了,要不就是在中不可用,要不就是重复,真正能用的就比较少了。提供的服务器在中国都ping得通,每24小时自动更新,自动检测,从几个百服务器筛选出在中国可通的服务器列表。[下载中国可用Tracker服务器列表-每24小时更新]提供的服务…

    2022年10月1日
    6

发表回复

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

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