无法解析的外部符号 “public: static void __cdecl std::_String_base::_Xran(void)” (?_Xran@_String_base@std@@SAXXZ)"

简介: 采用下面的方法。重新编译了一下依赖的库,OK了。 问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示:
在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是…

问题描述:

今天用VS2015编译一个在VC6下Coding的工程的时候,VS给出了一堆链接错误信息

无法解析的外部符号 "public: __thiscall exception::exception(class exception)"


在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是重复的,只有两三个外部符号未正确解析,如下:

"public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)
"public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xran@_String_base@std@@SAXXZ).

问题分析:

首先,可以确定是程序在Build(构建)过程中,链接静态链接库libprotobuf.lib的时候出现外部符号无法解析的问题,而且可以看出 libprotobuf.lib库中的很多的中间目标文件(Windows下以.obj作后缀名的文件)都对此外部符号存在着引用,但在符号重定位时候却 在全局符号表中找不到引用的符号。

而_Xran和_Xlen这两个符号到底是什么呢,通过google可以大致了解到时string类里面的两个符号,难道问题出在对于string类的引 用么?那么我们可以通过下术的步骤来观察一个引用string头文件的源文件经过IDE的预处理后是怎么样的

1、新建一个名为Test.CPP文件,内容很简单,只是包含一个string头文件,即#include
2、打开VS带的Command Prompt,输入命令 CL /EP Test.cpp > D:\1.txt

上述命令为使用MSVC的编译器对Test.cpp进行预处理操作,并将内容重定向到1.txt中。

情况一:
如果你用的VS2005或者VS2008下的命令行工具的话,在打开1.txt后其实可以搜索到如下的内容:

情况2:
如果你使用的是VS2010的话,那么在产生的1.txt中搜索_Xlen与_Xran的话,则为如下的内容:

补充:其中第二个_Xran与_Xlen是在类basic_string中定义的,显然与VS2005与VS2008下产生的不同。

问题总结:

静态链接库libprotobuf.lib在旧版本IDE上编译的,所以string类中符号被解析成形如static void __cdecl _Xlen()

而在高版本的VS2015上string中的_Xlen与_Xran符号则被解析成了__declspec(noreturn) void _Xlen() const

所以才会在链接过程中出现上述开头出现的一堆问题

问题解决:

第一种方法:

重新在高版本的IDE下编译libprotobuf.lib,这种方法最行之有效啦,也很简单

第二种方法:

可以新建一个链接库,导出无法解析的几个符号,并这几个符号实现中重定向到VS2015下预处理后的那几个符号即可。
具体参考这个网址:http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/5ac28a31-3339-4db1-90f4-68edad360309 里面的JN123给出的方法

无法解析的外部符号 “public: static void __cdecl std::_String_base::_Xran(void)“相关推荐

  1. error LNK2001: 无法解析的外部符号 public: static int Pe...

    2019独角兽企业重金招聘Python工程师标准>>> error LNK2001: 无法解析的外部符号 "public: static int Person::b&quo ...

  2. LNK2019无法解析的外部符号 public: static struct cv::Ptr class cv::xfeatures2d::SURF问题解决

    原因是lib文件没有引入 opencv_xfeatures2d320d.lib opencv_features2d320d.lib 在配置opencv时,应把D:\Program Files (x86 ...

  3. C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用

    // static_test.h : 头文件 002 #pragma once 003 004 class static_test 005 { 006 public: 007 static_test( ...

  4. 错误 LNK2019 无法解析的外部符号 “public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray

    错误 LNK2019 无法解析的外部符号 "public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_Output ...

  5. 已解决:LNK2001 无法解析的外部符号 public: virtual void __cdecl CDigitalEarthView::OnInitialUpdate(void)

    在运行C++程序时,出现了如下错误: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "public: virtual void __cdecl ...

  6. 错误 LNK2019 无法解析的外部符号 “public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray

    编译ORM_SLAM3中的DBoW2 环境:win10+vs2017,DEBUG x64 opencv为3.1.0 出现错误: 错误    LNK2019    无法解析的外部符号 "pub ...

  7. error LNK2019: 无法解析的外部符号 “public: __cdecl ...,函数 ...中引用了该符号解决办法

    vs报错输出如下所示: 1>myview.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl CSPReport::CSPReport(vo ...

  8. 无法解析的外部符号 “public: __cdecl nvinfer1::YoloPluginCreator::YoloPluginCreator

    无法解析的外部符号 "public: __cdecl nvinfer1::YoloPluginCreator::YoloPluginCreator 解决方法1: 不选择c++项目,而选择建一 ...

  9. error LNK2019: 无法解析的外部符号 public: virtual void * __thiscall

    vs2010,qt5.7 error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MyThread::qt_metacast( ...

最新文章

  1. 并发执行变成串行_一篇讲透如何理解数据库并发控制(纯干货)
  2. 综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
  3. oracle中匹配函数怎么用,ORACLE 使用正则表达式的函数
  4. 笔记-高项案例题-2018年上-计算题
  5. Spark SQL CLI 运行
  6. python函数手册 stata_Stata连享会-Python量化
  7. 【TensorFlow】——Windows10、pycharm、Python3.6.4中安装CPU和GPU两种版本的TensorFlow
  8. 有感软件安装称呼的变化
  9. 汇编在嵌入式编程中的作用_如何在嵌入式Power BI报表中以编程方式传递凭据
  10. wsdl2java validate_使用cxf wsdl2java进行客户端证书身份验证
  11. C51单片机串口初始化为何是这样:SCON=0X52;TMOD=0X20;TH1=0XF3;TR1=1;
  12. 等值面抽取技术(Iso-surfaces Extraction Technique)
  13. python爬虫总结,看这篇就够了
  14. 计算机科学中的数学第一章答案,翻译《计算机科学与数学》第一章第四节:我们的公理...
  15. linux服务器告警信息:Free inodes is less than xx% on /volume 排查
  16. Flowable 工作流引擎
  17. HTML+CSS仿写京东页面附代码(web前端大作业)
  18. 电调板维修之更换atmega8a主控芯片
  19. 1.[QT | QCharts | 动态显示]折线图标题字体大小无法更改
  20. Python实例15:霍兰德人格分析雷达图

热门文章

  1. 不同公司5%重仓持股统计(2011-2021年)
  2. ROS2机器人笔记20-11-29
  3. 线程池的几个重要参数
  4. “直接基于成本法”与“模拟权益法”两种合并报表模式比较与分析:响应新准则
  5. Spring捕获AOP抛出的异常
  6. AndroidApp之图书管理系统(一)
  7. @kubernetes(k8s) 应用配置管理(ConfigMap、subPath、Secret)
  8. 安全修改postgresql用户密码
  9. 网络互联与互联网 - CIDR:无类别域间路由
  10. PowerSyncKM 包尔星克 对拷线无法自动链接windows和统信系统