VS2010:error LNK2019 :无法解析的外部符号

最近在研究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 :无法解析的外部符号然后

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值