当我们在visual Studio 中编译时,经常会发生这两个错误,通常这两个错误是同时产生的。

产生原因

找到一个或多个多重定义的符号

生成因一个或多个符号的多个定义而失败。 该错误之前为错误 LNK2005。

通常情况下,是因为不正确的使用导致的 变量或者函数名重名

解决方案:

  1. 定位到错误的地点
    在LNK2005的错误的说明中可以找到
    错误 LNK2005 “private: static class GameMap * GameMap::ga_me” (?ga_me@GameMap@@0PEAV1@EA) 已经在 bigHomework.obj 中定义 Project1 …\Main.obj 1
  2. 删除部分代码,找到重定义所在
    因为一般情况下可能看不出来,所以尽量减少对应的变量名或者函数名,直到正确编译。

提供一个我遇到的情况:

class GameMap {
private:static GameMap* ga_me;char gamemap[21][21];GameMap() { memset(gamemap, 0, sizeof(gamemap)); }~GameMap() { if (ga_me != NULL)delete ga_me; }
public:staticGameMap* getInstance() {if (ga_me == NULL) {ga_me = new GameMap();}return ga_me;}
};
GameMap* GameMap::ga_me = NULL;//去掉这句话就是正确的

错误说明:

当初始化类中的static变量是,必须在类外指定值。
在单例模式中初始化GameMap* GameMap::ga_me = NULL;时算是一次对变量名的定义
ga_me = new GameMap();也当做了一次对变量名的重新定义。
因此,就产生了这两个错误。

我的改正办法是:
直接删掉GameMap* GameMap::ga_me = NULL;
因为在指针没有显式初始化的情况下,默认的初始化为NULL,程序能够正确。

LNK1169 LNK2005错误相关推荐

  1. VC编程中经常能遇到LNK2005错误

    昨天开始修改的程序,主要添加了OpenCV和GSL库,想把粒子滤波给实现了,出现很多没碰到过的错误! 使用VC编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难解 ...

  2. [转]在Visual C++中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误

    症状 当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误之一: nafxcwd.lib... 当 C 运行时 (CRT) ...

  3. c++ error LNK2005......错误解决方法

    错误如图 解决方案: 一 今天被error LNK2005这个问题折腾了好久好久,从网上找了一些文章看了看,大多数都说是 头文件包含比较混乱,同一个文件被多个文件包含了:还有的说是某两个.dll文件被 ...

  4. error LNK2005:错误改正方法

    .h文件中除了包含函数的声明以外,如果还有子函数的声明以及全局变量的定义,前面必须加上关键字"static",因为当其他的函数调用该子函数或者变量的时候,是属于外部变量. 转载于: ...

  5. 错误:error LNK2005 解决方法

    编译时链接错误如下: MySAX2Handler.obj : error LNK2005:"public: __thiscall AttributeDetails::AttributeDet ...

  6. VC++的链接错误LNK2005

    VC++的链接错误LNK2005 spoons  2006-09-26 11:14:28   被这个error折磨了近一周,虽然每次出现的位置和原因都不尽相同,但都是 LIBCD.lib(crt0da ...

  7. error:LNK2005 函数已经在*.obj中定义

    出现上面的错误,只要原因有如下几个: 1.头文件的重复包含 包含的头文件中含有变量.函数.类的定义,在其他使用的地方多次包含,造成重复包含,产生LNK2005错误, 有两种解决方法: 1)使用宏 在头 ...

  8. LNK2005之解决办法

    造成LNK2005错误主要有以下几种情况:  1.重复定义全局变量.可能存在两种情况:   A.对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下.其实这是错误的,全局 ...

  9. fatal error LNK1169: one or more multiply defined symbols found解决方法

    以下为转载网上的经典分析文章,借鉴下: 不过有些还是不很明白,欢迎交流! fatal error LNK1169: one or more multiply defined symbols found ...

  10. 关于VS “error LNK2005: 已经在 .obj 中定义“

    1>OpenCVFi.obj : error LNK2005: "class cv::Point_<double> __cdecl reverse(class cv::Po ...

最新文章

  1. iOS 10道细节面试题
  2. android 根据文本计算行数,ios 获取Text行数和每行显示的内容
  3. 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )
  4. Password-less logins with OpenSSH
  5. mysql memory_MySQL MEMORY 引擎及性能比对
  6. 计算机机房安全风险防控规范,中心机房安全风险分析一览表
  7. 复习Java字节流_字符流使用及案例
  8. Verilog实现3分频实例
  9. php mysql 网站_实验六:MYSQL+PHP的网站搭建
  10. 外表加载oracle,opengauss外部表插件——oracle_fdw
  11. linux查询文件存储格式,蜗牛哥:Linux中查看文件内容,5种常用查看方式
  12. hdu 5335 Walk Out(bfs+斜行递推) 2015 Multi-University Training Contest 4
  13. 签到系统实验报告_实验报告评分标准
  14. 【YY手机】用AVR单片机制作手机系列教程-制作篇
  15. MATLAB的semilogy函数的理解
  16. java el表达式 if else_EL表达式 JSTL 三层架构
  17. 百度地图API(WEB端/JavaScript API)--实际运用与扩展
  18. vue项目添加百度统计及设置埋点
  19. jsf的verbatim标签
  20. 十个Python图像处理工具,不可不知!

热门文章

  1. FireEye 网络攻击危害红队安全工具
  2. Python源码阅读(一)
  3. 00、Python源码编译
  4. 消息队列——ActiveMQ使用及原理浅析
  5. 详解两个队列实现一个栈(python实现——经典面试题)
  6. java group by_Java中如何实现对List内容分组(group by)?
  7. catia二次开发:IDE界面介绍
  8. ad建集成库_手把手教你创建自己的Altium Designer集成元件库
  9. TK mybatis 逆向工程
  10. Windows系统下载安装MinGW(包括32位和64位)