1.C2589 “(”:“::”右边的非法标记
(转载自:https://blog.csdn.net/ldepn/article/details/78647114)
2.error LNK2019 :无法解析的外部符号
1>api.obj : error LNK2019: 无法解析的外部符号 __imp__WSAGetLastError@0,该符号在函数 "public: int __thiscall CUDTUnited::startup(void)" (?startup@CUDTUnited@@QAEHXZ) 中被引用
(转载自:https://blog.csdn.net/renguoqing1001/article/details/52848232)
!!!是头文件和lib文件缺失!!!!
(我是在配置pcl的时候,以为只要引入属性表就可以了,但实际上还要在自己项目上在配置一下pcl依赖项才行)
具体问题具体分析,网上的解决方案:
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这两个函数你完全可以去找到的,根据提示提到的文件和函数,将提到的相关的项目进行引用就可以了。不过一般引起这种错误的原因是,你拿着别人的项目在自己的电脑上跑,那么你可以问一下原作者的引用关系。不过还是自己动手比较快。