我在VC ++ 6.0中做一些示例程序。对于一些简单和小的程序,我不想为每个程序创建单独的项目。我在一个项目中创建了2个文件,没有.h文件,所以我将.cpp文件包含在另一个.cpp文件中。 如果我编译它的工作,但如果我构建代码它给出错误。以下是代码:
file1.cpp :
-----------
#include <iostream>
#include "Calculate_Int.cpp"
using namespace std;
int main ()
{
cout << "\n\nFirst file \n" ;
int x= cal_integer();
return 0;
}
Calculate_Int.cpp:
------------------
#include<iostream>
using std::cout;
using std::endl;
int cal_integer(){
cout<< 1+2<<endl;
cout<<1-5<<endl;
cout<<1-2<<endl;
return 0;
}
如果我构建此Project1.exe,则出现以下错误:
...链接 Calculate_Int.obj:错误LNK2005:“int __cdecl cal_integer(void)”(?cal_integer @@ YAHXZ)已在file_1.obj中定义 Debug / Project_1.exe:致命错误LNK1169:找到一个或多个多重定义的符号 执行link.exe时出错。
Project_1.exe - 2个错误,0个警告
请让我知道出了什么问题。
答案 0 :(得分:0)
包含文件与在包含该文件的位置复制该文件的内容相同。这意味着Calculate_Int.cpp
的内容在您的项目中编译两次。这就是链接器错误告诉你的:它不知道选择哪个版本。
为了编译main.cpp
,你只需要知道你在那里使用的函数的签名;这就是,你只需要一个声明,而不是一个定义。因此,您可以在main.cpp
中替换此行:
#include "Calculate_Int.cpp"
用这个:
int cal_integer();
你的项目将编译和链接就好了。无论如何,正确的方法是使用该行创建文件Calculate_Int.h
并将其包含在您需要的任何地方。