Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;找到一个或多个多重定义符号;编译时出错_C++ - Fatal编程技术网

C++ &引用;找到一个或多个多重定义符号;编译时出错

C++ &引用;找到一个或多个多重定义符号;编译时出错,c++,C++,在构建时,我遇到以下错误: 错误5错误LNK2005:“int\uu cdecl numGen(void)”(?numGen@@YAHXZ) 已在main.obj中定义 错误6错误LNK1169:找到一个或多个乘法定义符号 numGen.cc: #include <stdlib.h> #include <stdio.h> #include <time.h> int numGen() { int rNum; srand(time(NULL));

在构建时,我遇到以下错误:

错误5错误LNK2005:“int\uu cdecl numGen(void)”(?numGen@@YAHXZ) 已在main.obj中定义 错误6错误LNK1169:找到一个或多个乘法定义符号

numGen.cc:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int numGen()
{
    int rNum;
    srand(time(NULL)); //--Seeds a random number.
    rNum = 1 + (rand() % 100);

    return rNum;
}
#包括
#包括
#包括
int numGen()
{
内部;
srand(time(NULL));//--为随机数种子。
rNum=1+(rand()%100);
返回rNum;
}
main.cc:

#include <iostream>
#include "NumGen.cc"

int main()
{
    std::cout << numGen();
    return 0;
}
#包括
#包括“NumGen.cc”
int main()
{

STD::CUT< P>不应将C++文件包含在其他C++文件中。这导致了双重定义的符号。相反,您应该创建一个带有前向声明的头文件,包括在共享函数的文件中,并分别编译文件:

numGen.h:

int numGen();

在两个
cc
文件中包括
numGen.h
,并删除
#包括“numGen.cc”代码> 

不应在其他C++文件中包含C++文件。这会导致双重定义的符号。相反,您应该创建一个带有前向声明的头文件,包括在共享函数的文件中,并分别编译文件:

numGen.h:

int numGen();

在两个
cc
文件中包括
numGen.h
,并删除
#包括“numGen.cc”

您正在包括cc文件。仅包括实际的头文件

您正在包括cc文件。仅包括实际的头文件

By
。\include
ing
NumGen.cc
在您的
main.cc
文件中,您正在使预处理器创建两个文件,如下所示:

NumGen.cc

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int numGen()
{
    int rNum;
    srand(time(NULL)); //--Seeds a random number.
    rNum = 1 + (rand() % 100);

    return rNum;
}
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int numGen()
{
    int rNum;
    srand(time(NULL)); //--Seeds a random number.
    rNum = 1 + (rand() % 100);

    return rNum;
}

int main()
{
    std::cout << numGen();
    return 0;
}
因为
#include
预处理器指令只是将要包含的文件的内容插入要包含的位置(当然,除非它以前被包含在include-guard中。我还假设您正在同一命令行上编译
NumGen.cc
main.cc
,因此,如果函数
NumGen
现在在这两个文件中定义和实现,那么自然会出现多定义的符号错误

您需要做的是在头文件中向前声明
numGen
,我们称之为
numGen.h

int numGen();
然后在
NumGen.cc
main.cc
中添加行
#include
ing
NumGen.cc
main.cc
文件中,会导致预处理器创建两个文件,如下所示:

NumGen.cc

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int numGen()
{
    int rNum;
    srand(time(NULL)); //--Seeds a random number.
    rNum = 1 + (rand() % 100);

    return rNum;
}
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int numGen()
{
    int rNum;
    srand(time(NULL)); //--Seeds a random number.
    rNum = 1 + (rand() % 100);

    return rNum;
}

int main()
{
    std::cout << numGen();
    return 0;
}
因为
#include
预处理器指令只是将要包含的文件的内容插入要包含的位置(当然,除非它以前被包含在include-guard中。我还假设您正在同一命令行上编译
NumGen.cc
main.cc
,因此,如果函数
NumGen
现在在这两个文件中定义和实现,那么自然会出现多定义的符号错误

您需要做的是在头文件中向前声明
numGen
,我们称之为
numGen.h

int numGen();

然后把行
#包括“NumGen.h”
NumGen.cc
main.cc

中,为什么要包含一个源文件?@GManNickG这就是函数所在的位置…编译时使用的命令/制作文件是什么?你能发布标题吗?为什么包含源文件?@GManNickG这是函数所在的位置…编译时使用的命令/制作文件是什么你能把标题贴出来吗