精华内容
下载资源
问答
  • 找到一个或多个多重定义的符号

    万次阅读 2017-06-01 11:33:31
    a.h中,有函数实现 int a; vector<double> query...注:这种情况下引起的“找到一个或多个多重定义的符号”,是因为多个源文件内不能有同名的全局标识,所以不能在头文件内定义全局变量和函数, 1. 第一种解决
    1. a.h中,有函数实现
    int a;
    vector<double> query(CString str, int index)
    {
    .....
    }
    1. b.cpp中
    #include "a.h"
    ...
    
    1. c.cpp中
    #include "a.h"
    ...
    

    注:这种情况下引起的“找到一个或多个多重定义的符号”,是因为多个源文件内不能有同名的全局标识,所以不能在头文件内定义全局变量和函数。
    第一种解决方法:只能定义为静态变量static和内联函数inline,因为它们不是全局的——除非这个头文件只被一个源文件包含。
    1.1. a.h中,有函数实现

    static\inline int a;
    static\inline vector<double> query(CString str, int index)
    {
    .....
    }

    第二种解决方法:
    2.1. a.h中,仅有定义

    int a;
    vector<double> query(CString str, int index)

    2.2. a.cpp 中,有实现

    #include "stdafx.h"//本来就有定义的
    #include "a.h"
    int a;
    vector<double> query(CString str, int index)

    2.3. b.cpp 中

    #include "a.h"
    ...
    

    2.4. c.cpp 中

    #include "a.h"
    ...
    
    展开全文
  • 这是一个链接时候检查到的错误,大概有下面两种情况会引起这个错误。...编译能够通过,但链接时出了”errorLNK1169:找到一个或多个多重定义的符号“的错误。这是因为B.cpp包含头文件 A.h后,相当于又定义了变...

    原文链接:https://blog.csdn.net/m_LeonWANG/article/details/37598807

    这是一个链接时候检查到的错误,大概有下面两种情况会引起这个错误。

    第一种:

    1.变量定义:

    A.h中声明了变量a(非类成员变量),A.cpp是A.h中所声明的类的实现源代码,B.cpp是主程序文件,包含头文件 A.h。编译能够通过,但链接时出了”error   LNK1169:   找到一个或多个多重定义的符号“的错误。这是因为B.cpp包含头文件 A.h后,相当于又定义了变量a。

    解决办法是在A.h中的变量声明前加上extern 关键字,表示这里只是声明不定义,然后在A.cpp中不加extern关键字定义这个变量,编译链接顺利通过。
    第二种:

    2.函数定义:

    在A.h中定义函数func:

    void func()
    {

    ...
    }

    B.cpp中包含头文件 A.h,链接时也会出现相同的错误。

    解决办法有两个,一种是添加inline关键字,这样实际上是在调用处展开函数体代码,代替函数调用;另一种办法是将函数实现放在A.cpp中,这样就不会出现重定义问题。
    我出现的问题通过第一种方法解决:

     

     链接顺利通过。。。哈哈

    展开全文
  • 今天在VS里面写了个程序,奇怪的是,当我想用CmdLine时,编译提示LNK 1169:找到一个或多个多重定义的符号 查了相关的博客,原因是在main.cpp添加了一个关于CmdLine的头文件,同时在同一个项目的另一个cpp中包含了...

    今天在VS里面写了个程序,奇怪的是,当我想用CmdLine时,编译提示LNK 1169:找到一个或多个多重定义的符号

    查了相关的博客,原因是在main.cpp添加了一个关于CmdLine的头文件,同时在同一个项目的另一个cpp中包含了这个关于CmdLine的头文件,因此报错,一个头文件被多次包含

    解决方法就是把另一个cpp中包含的头文件注释掉,就可以了

    展开全文
  • “error LNK1169: 找到一个或多个多重定义的符号”

    **

    查看头文件包含是不是重复了

    **

    可以参考
    http://blog.csdn.net/m_leonwang/article/details/37598807

    这是一个连接时候检查到的错误,大概有下面几种情况会引起这个错误。
    1.变量定义:
    A.h中声明了变量a(非类成员变量),A.cpp是A.h中所声明的类的实现源代码,B.cpp是主程序文件,包含头文件 A.h。编译能够通过,但链接时出了”error LNK1169: 找到一个或多个多重定义的符号“的错误。这是因为B.cpp包含头文件 A.h后,相当于又定义了变量a。

    解决办法是在A.h中的变量声明前加上extern 关键字,表示这里只是声明不定义,然后在A.cpp中不加extern关键字定义这个变量,编译链接顺利通过。

    2.函数定义:

    在A.h中定义函数func:

    void func()
    {


    }

    B.cpp中包含头文件 A.h,链接时也会出现相同的错误。

    解决办法有两个,一种是添加inline关键字,这样实际上是在调用处展开函数体代码,代替函数调用;另一种办法是将函数实现放在A.cpp中,这样就不会出现重定义问题。

    展开全文
  • 编译C++程序时,出现了“error LNK1169:找到一个或多个多重定义的符号”错误提示
  • 问题描述如下: 有 三个源文件,A.h、B.cpp、C.cpp。...在编译时,编译能够通过,但链接时出了问题,出现”error LNK1169: 找到一个或多个多重定义的符号“的错误。 经过分析,确定了这是由于两...
  • 1>F:\PROJECT\Picture_Matcher\MFC_MyChat_test\MFC_MyChat\Release\MFC_MyChat.exe : fatal error LNK1169: 找到一个或多个多重定义的符号 说明:RichEditCtrlEx.cpp就是MFC中一个编辑框控件需要cpp oleunk.cpp...
  • 错误:fatal error LNK1169: 找到一个或多个多重定义的符号原因:我们都知道一般高级语言程序编译的过程其中有编译、链接两步这两步: 1.编译是源代码生成obj二进制目标文件的过程, 注意一个源代码文件(指.cpp, 而...
  • 编译时遇到:1&gt;ToChinese.obj : error LNK2005: "public: __thiscall To...0ToChinese@@QAE@M@Z) 已经在 GameScene.obj 中定义 1&gt;E:\CocosLearnVideoDemo\DifferentPiece\proj.win32\Debug.win...
  • 昨天,尝试一个项目,遇到了如下的问题。先来还原一下: 头文件test.h #pragma once #include #include using namespace Eigen; using namespace std; class point2 { public: point2(int x1,int y1):x...
  • a.h头文件代码 ``` //#pragma once//这里用了网上的方法在代码最上面加个这个,防止...error LNK1169: 找到一个或多个多重定义的符号 本人是个菜鸟,请问前辈们,这样子该如何处理呢,C币不多,望有人能回答,谢谢!
  • 错误2:error LNK1169: 找到一个或多个多重定义的符号 程序代码如下: #include <stdio.h> int main() { printf("hello world!"); return 0; } 2.错误原因 工程里有多个.c或.cpp文件,而且都定义了...
  • 在我使用VS编写c语言...找到一个或多个多重定义的符号 解决方法: 将不需要编译的源文件排除:右键“属性”,将“从生成中排除”选择“是”,保存后再运行需要运行的源文件就可以成功,且被排除的文件右下角有红标。
  • 问题描述如下: 有 三个源文件,A.h、B.cpp、C.cpp。 A.h是头文件,其中声明了三个变量...在编译时,编译能够通过,但链接时出了问题,出现”error LNK1169: 找到一个或多个多重定义的符号“的错误。 经过分
  • 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现。 此外在Base.hpp中还有一个函数的定义(函数声明和定义都在Base.hpp文件中)三个文件代码如下: // Base.hpp #...
  • 生成一个项目的时候会有两部分:编译和链接。 在链接的时候发生这个错误, 1>pluginMain.obj : error LNK2005: _DllMain@12 已经在 helix_plugin2Cmd.obj 中定义 1>pluginMain.obj : error LNK2005: "struct ...
  • 1.cpp:(调用2文件)#include #include"2.cpp" //错误,应该改成#include"2.h" ............2.h:#include .......2.cpp:#include ...编译出错:error LNK1169: 找到一个或多个多重定义的符号 D:\Vis
  • 原文地址:找到一个或多个多重定义的符号的解决办法" style="text-decoration:none; color:rgb(117,76,39)">vc 找到一个或多个多重定义的符号的解决办法作者:vitas vc 找到一个或多个多重定义的符号, 这个...
  • fatal error LNK1169: 找到一个或多个多重定义的符号;这个问题出现的情况。 字面意思理解,有一个符号被多次定义,比如变量名,方法名。在C语言中,不像在java语言中,在不同的文件中,也不能使用相同的方法名。这...
  • fatal error LNK1169: 找到一个或多个多重定义的符号 造成此问题的原因是由于一个函数或者变量在一个.h中定义,然后这个.h又包括在多个其它文件中 从而造成 变量或者函数(往往是全局的)的多重定义 ...
  • 当你所引用的dll存在多个重定义的符号的时候,如果使用Debug编译环境的话,就会提示这个错误,当然如果dll为了就是模块化,可以定义多个不同文件中,此时这样修改: 项目---右键---属性----链接器---常规---强制...
  • 1>G:\MFCProjiect\VideoLog\Debug\VideoLog.exe : fatal error LNK1169: 找到一个或多个多重定义的符号 在网上查了一下,都说要忽略某个默认库。 忽略libcmtd.lib后 1>Strmbasd.lib(mtype.obj)...
  • 这是一个连接时候检查到的错误,
  • 1、在a.h文件中定义申明了自己的函数和一个变量如下:  #include  #include  #include  #include"cv.h"  using namespace std;  #pragma once  vector all_files ;  void FindMyfile(st

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 308,391
精华内容 123,356
关键字:

找到一个或多个重定义