在Eclipse中构建项目时出错
Error while building project in Eclipse
当我在eclipse中编译C++项目时,它会显示错误,表明IO.cpp中的所有函数都已定义。
这是我的代码:
文件:IO.cpp
#include <string>
#include <iostream>
using namespace std;
void print(string line) {
cout << line;
}
void println(string line) {
cout << line << endl;
}
void printError(string message, string error, string file) {
cout << "An error occurred!" << endl;
cout << "Message: "+ message << endl;
cout << "Error: "+ error << endl;
if(file != "") {
cout << "File/Method: "+ file << endl;
}
}
文件:main.cpp
#include <string>
#include <iostream>
#include "IO.cpp"
using namespace std;
int main()
{
println("Hello world!");
}
您应该从main.cpp
中删除下面的行
#include "IO.cpp"
并在using namespace std
之后添加以下行
void print(string line);
void println(string line);
void printError(string message, string error, string file);
如果您再次包含cpp
文件,该文件也存在于项目源列表(要编译的文件)中,则您的程序将获得相同函数的多个定义,这在C++中是不允许的。另一方面,这里建议的替代方案由函数声明组成,它可以出现多次,但在首次使用之前必须至少出现一次。
标准做法是移动头文件中的声明(例如:IO.h
),并将此头文件包含在IO.cpp
和main.cpp
中
进一步阅读:
声明和定义之间的差异
您将模块IO.cpp
包含在模块main.cpp
中
#include "IO.cpp"
因此,您已经获得了两个模块中的函数定义:IO.cpp
和main cpp
您应该创建一个头文件,例如IO.h
,并将所有函数声明放在那里。然后您必须在IO.cpp
和main.cpp
中包含此头文件
例如
IO.h
#include <string>
void print( std::string line);
void println( std::string line);
void printError( std::string message, std::string error, std::string file);
IO.cpp
#include <string>
#include <iostream>
#include <IO.h>
using namespace std;
void print(string line) {
cout << line;
}
void println(string line) {
cout << line << endl;
}
void printError(string message, string error, string file) {
cout << "An error occurred!" << endl;
cout << "Message: "+ message << endl;
cout << "Error: "+ error << endl;
if(file != "") {
cout << "File/Method: "+ file << endl;
}
}
main.cpp
#include <IO.h>
//...
相关文章:
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- Flex/Bison:构建示例项目以生成 CPP 时出错
- 将项目导入 Android Studio 后出错
- 将 Dr. Memory 与 Visual Studio 项目配合使用时出错:缺少应用程序所需的库
- 使用 C++Builder 项目读取字符串中的文件时出错
- 在 Visual Studio 2015 中生成 vsal 项目时出错
- 创建新的 Visual Studio c++ 项目时出错
- 编译包含 CPLEX 工具的项目时出错
- CMake 和/或在为项目添加提升时出错
- 链接 gtest 项目时出错
- iOS:在真实设备上运行项目时出错
- 在qmake项目中编译sqlite时出错
- LNK1104将Boost库添加到Qt项目时出错
- 仅在从命令行构建Qt项目时出错
- 运行调试库项目时发布库出错
- Qt项目qmake在构建上出错
- 将VC++项目从VS2010升级到VS2012时出错
- 在c++项目中包含dlib库时出错
- 使用CMake编译OpenCV项目时出错