大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
最近在研究sumo,前几天将编译环境都搭建好了后,自己在解决方案的基础上新增加了一个项目,但是突然冒出来好多问题,其他都已经通过网络搜索解决。关于错误:error LNK2019 :无法解析的外部符号。网络方法很多,自己按照各种方法测试后依然不能解决。最后想到,和已经编译好的项目配置一项一项的作对比,来看看到底哪里出错了。因为根据错误提示,是两个cpp文件中的函数定义被引用。
具体错误代码样式(样子都差不多)):
1>—— 已启动生成: 项目: udt_appserver, 配置: Debug Win32 ——
1>生成启动时间为 2013/11/11 20:53:08。
1>InitializeBuildStatus:
1> 正在创建“Debug\udt_appserver.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1> appserver.cpp
1>ResourceCompile:
1> 所有输出均为最新。
1>ManifestResourceCompile:
1> 所有输出均为最新。
1>api.obj : error LNK2019: 无法解析的外部符号 __imp__WSAGetLastError@0,该符号在函数 “public: int __thiscall CUDTUnited::startup(void)” (?startup@CUDTUnited@@QAEHXZ) 中被引用
1>channel.obj : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>api.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 “public: int __thiscall CUDTUnited::startup(void)” (?startup@CUDTUnited@@QAEHXZ) 中被引用
1>api.obj : error LNK2019: 无法解析的外部符号 __imp__WSACleanup@0,该符号在函数 “public: int __thiscall CUDTUnited::cleanup(void)” (?cleanup@CUDTUnited@@QAEHXZ) 中被引用
1>api.obj : error LNK2019: 无法解析的外部符号 __imp__getsockname@12,该符号在函数 “public: int __thiscall CUDTUnited::bind(int,unsigned int)” (?bind@CUDTUnited@@QAEHHI@Z) 中被引用
1>F:\C_TEST\test_udt\Debug\udt_appserver.exe : fatal error LNK1120: 20 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.05
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
错误提示:
按照网上的方法,是头文件和lib文件缺失。但是自己配置好以后仍然不能解决这个错误。
解决方案:
1、查看是否头文件和lib都已经导入。(我已经设置正确,仍然有错,看方法2)
一般这种方法很难达到效果,网上也好多人说,知道这种错,但是我不知道缺哪种lib啊…..这就尴尬了。
2、查看是否有引用的其他项目(需要你提前知道他们的引用关系)
我出现这种情况是在一个解决方案中有好多个项目,其中它们之间有相互引用的关系。我新建项目后,使用了以前的引用文件,但是我没有设置引用关系。具体方案:
项目右键–属性或者是引用,效果一样:
然后就是设置相应的引用项,点击添加新引用(N)按钮进行引用:
设置完以后重新编译运行。错误么有了。
题外话:
也许你说了,我哪知道他们的引用关系。一般都可以从错误提示中看出来的。比如:
TraCIAPI.obj : error LNK2019: 无法解析的外部符号 “public: virtual void __thiscall tcpip::Storage::writeInt(int)” (?writeInt@Storage@tcpip@@UAEXH@Z),该符号在函数 “protected: void __thiscall TraCIAPI::send_commandSimulationStep(__int64)const ” (?send_commandSimulationStep@TraCIAPI@@IBEX_J@Z) 中被引用
其中的 tcpip::Storage::writeInt(int)和TraCIAPI::send_commandSimulationStep这两个函数你完全可以去找到的,根据提示提到的文件和函数,将提到的相关的项目进行引用就可以了。不过一般引起这种错误的原因是,你拿着别人的项目在自己的电脑上跑,那么你可以问一下原作者的引用关系。不过还是自己动手比较快。
error LNK2019 :无法解析的外部符号然后
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188810.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...