"error LNK2019: 无法解析的外部符号"原因分析
1.工程属性选择错误
- 问题:

- 分析:
新建的是控制台程序,但编译器和链接器却用的是windows子系统 - 解决办法:
WINDOWS和CONSOLE选择
右键工程名, 打开属性,依次找到以下路径:

然后将这里的_WINDOWS删除,并添加_CONSOLE

接下来再依次点击如下路径:

将这里的子系统切换为“控制台”,修改完成后再次编译即可。
相反,如果是windows程序,就按照相反的设置来配置即可 - 结果:
编译成功!

2.缺少依赖
- 问题:

- 分析:
头文件中使用了extern "C"声明了NewSecuTradeApi函数extern "C"{
TRADE_API_EXPORT CHSSecuTradeApi* NewSecuTradeApi(const char *pszFlowPath);
}
函数是用C语言写的,VS编译器会按C语言规则编译,但链接器却不知道还傻傻的用C++规则的函数名去找,结果却没找到,说明头文件对应的依赖库没有包含
- 解决办法:
添加工程引用的lib文件名:
项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。

或者利用预处理命令:#pragma comment(lib, "../../lib/win64/HSSecuTradeApi.lib")
- 结果:
编译成功!

其他原因分析
3.缺少实现
只是在.h里面声明了某个方法,没有在cpp里面实现;
类方法的实现未加类标识:如, “CTest::Connect(void) { … }” 写成了 “Connect(void) { … }”;
4.文件同名
在工程中加入了有相同名字的文件或者类;
5.缺少.lib路径/引用或.h目录
如果此类为静态库中定义的类,可能没有添加头文件目录和文件引用的lib静态库路径;一般出现于你使用了第三方提供的库,下载了头文件却忘了载库文件,或库文件忘记放到相应的目录下了。
添加工程的头文件目录:
- 项目->属性->配置属性->C/C+±>常规->附加包含目录:加上头文件的存放目录;
添加文件引用的lib静态库路径:
- 项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;
添加工程引用的lib文件名:
- 项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。
或利用预处理命令#pragma comment (lib, “xxx.lib”);
6.dll文件未添加
如果此类为动态库中定义的类,可能没有添加该动态库.dll文件到工程中;我出现过这个问题;
添加方法: 将.dll放到生成的.exe所在的文件夹下(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)
参考:
链接:https://blog.csdn.net/woshigaowei5146/article/details/115656266
"error LNK2019: 无法解析的外部符号"原因分析的更多相关文章
- [转] “error LNK2019: 无法解析的外部符号”之分析
HiLoveS原文“error LNK2019: 无法解析的外部符号”之分析 最近在用VS 2008开发,初学遇到不少问题,最头疼的问题之一就是:LNK2019. 百度一下讲的并不够全面,反正都没解决 ...
- “error LNK2019: 无法解析的外部符号”之分析
最近在用VS 2008开发,初学遇到不少问题,最头疼的问题之一就是:LNK2019. 百度一下讲的并不够全面,反正都没解决我的问题. error LNK2019问题在VC 6.0中是error LNK ...
- 摘:"error LNK2019: 无法解析的外部符号 该符号在函数 中被引用" 错误原因
例如“error LNK2019: 无法解析的外部符号error LNK2001: 无法解析的外部符号“private: static struct _OVERLAPPED CUsbCom::g_Wr ...
- 【转】MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC
@2018-12-18 [小记] vs-2013 编译 cJSON code in git-hub 时遇见问题 error LNK2019,解决如下 [问题描述]MSVCRTD.lib(crtexew ...
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
1.问题描述做开源项目时,碰到VS2010报错如下:MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___ ...
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 Debug ...
- MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC (转)
一.问题描述 我所使用的编程环境:VS2010 出现的问题如下: MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号_WinMain@16,该符号在函数 _ ...
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...
http://blog.csdn.net/playstudy/article/details/6661868 一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK201 ...
- ACE_TEST1.obj : error LNK2019: 无法解析的外部符号
ACE_TEST1.obj : error LNK2019: 无法解析的外部符号 "int __cdecl ace_main_i(int,char * * const)" (?ac ...
- 一个小错误:error LNK2019: 无法解析的外部符号 "public: __thiscall Turtle::~Turtle(void)" (??1Turtle@@QAE@XZ),该符号在函数 _main 中被引用
昨天在撸代码的时候遇到了一个十分蛋疼的错误 : 错误: 1>3.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Turtle::~ ...
随机推荐
- 平台工程时代的 Kubernetes 揭秘:2023年生产状况报告深度剖析
Kubernetes 在生产环境中的复杂性已经成为常态,在2023年这个平台工程盛行的时代,容器管理的最大亮点可能在于其灵活性,然而在运维政策和治理等方面仍然存在诸多挑战.八年过去了,在生产环境中使用 ...
- Linux机器自建账号并赋予sudo权限,同时修改远程端口
默认使用root账号来操作Linux有一定风险,因此需要自建账号并赋予sudo权限,方便使用 登录为root用户后,创建账号 adduser <username> Ubuntu系统会同时要 ...
- 每日总结9.20-phoenix的连接
今天连了phoenix 出现了好多问题,欸 一点点解决,看那个电脑我头都要晕了,jar包和xml文件的问题,总之是解决了 怎么办,我还不会springboot,好多人都学了,我害怕.大家怎么都这么努力 ...
- FreeSWITCH在answer前主动发dtmf
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 NAT环境的主动外呼场景下,会遇到线路侧回铃音数据无法接收的问题,需要FreeSWITCH主动发送RTP数据,发送D ...
- Pulsar3.0 升级指北
Pulsar3.0 介绍 Pulsar3.0 是 Pulsar 社区推出的第一个 LTS 长期支持版本. 如图所示,LTS 版本会最长支持到 36 个月,而 Feature 版本最多只有六个月:类似于 ...
- Cesium最简单的视效升级方案,无需修改代码即可实现
Cesium依靠其开源免费的特点基本上完全垄断了GIS这一块,并且其中99%的用户都是使用的CesiumJS,然而,对于一些使用Cesium的项目来说,要想升级视效可能需要进行繁琐的代码修改,增加了开 ...
- java,类、实例化、构造方法、this关键字、方法重载
编写类的步骤: 1.定义类名 2.编写类的属性 3.编写类的方法 public 访问修饰符,表示在整个项目中都可以调用,也可以用其他词 使用class关键字来定义类,如下,定义一个Cat类 给了属性 ...
- MyBatisPlus配置类-配置分页插件,注册为bean对象
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.a ...
- Python趣味入门12:初遇类与实例
小牛叔用轻松有趣的故事,带你进入Python的编程世界. 1.类 一提到类大神们就经常说封装.说白了,封装即把围绕同一个对象相同的代码.数据整合在一起.比如在某段游戏代码中(比如熊猫厨房),有一个&q ...
- Java注解,看完就会用
一.什么是注解 定义:注解(Annotation),也叫元数据.一种代码级别的说明. 它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次. 它可以声明在包.类.字段.方法.局部变 ...