如何 link 单个项目 Code::Blocks 中的多个 .cpp 文件?
How to link multiple .cpp files in Code::Blocks for a single project?
在阅读 C++ For Dummies 这本书时,我的 CodeBlocks 项目中有三个文件,main.cpp、Pen.h 和 Pen.cpp。它们看起来像这样:
main.cpp:
#include <iostream>
#include "Pen.h"
//#include "Pen.cpp"
using namespace std;
int main()
{
Pen MyPen = Pen();
MyPen.test();
}
Pen.h:
#ifndef PEN_H_INCLUDED
#define PEN_H_INCLUDED
//#include "Pen.cpp" // Uncommenting this gives a different error
using namespace std;
class Pen
{
public:
// attributes omitted
// PROTOTYPES:
// other functions omitted
void test();
};
#endif // PEN_H_INCLUDED
Pen.cpp:
#include <iostream>
#include "Pen.h"
using namespace std;
//other function definitions omitted
void Pen::test()
{
cout << "Test successful." << endl;
}
当我 运行 上面列出的代码时,我得到一个“对 `Pen::test()' 的未定义引用”错误。为了解决这个问题,我将 main.cpp 顶部的 #include 语句更改为:
#include <iostream>
//#include "Pen.h"
#include "Pen.cpp"
这按预期工作并正确打印出“测试成功”。
我的问题是:如果我以后无论如何都必须导入 .cpp 文件,那么将函数原型放在头文件中到底有什么意义?
编辑:原来这是一个不知道如何使用 Code::Blocks 而不是 C++ 语言的问题。
假设您使用的是 gcc,您可以通过命令行提供多个 .cpp
文件来一步编译和 link。
g++ Pen.cpp main.cpp
clang 应该是类似的。
clang++ Pen.cpp main.cpp
#include
应该永远不会 引用 .cpp
文件。完全没有。没有充分的理由这样做。包括您的 headers,然后在编译时提供 all .cpp
文件的名称。如果您的项目变大并且您有太多 .cpp
文件无法合理列出,那么是时候分解一个 makefile 或类似文件了。
在main.cpp
中包含头文件:
#include "Pen.h"
Pen.h
文件没问题。
您需要将 Pen.cpp
文件添加到项目树中。
转到项目 -> 添加文件...并添加 Pen.cpp
在阅读 C++ For Dummies 这本书时,我的 CodeBlocks 项目中有三个文件,main.cpp、Pen.h 和 Pen.cpp。它们看起来像这样:
main.cpp:
#include <iostream>
#include "Pen.h"
//#include "Pen.cpp"
using namespace std;
int main()
{
Pen MyPen = Pen();
MyPen.test();
}
Pen.h:
#ifndef PEN_H_INCLUDED
#define PEN_H_INCLUDED
//#include "Pen.cpp" // Uncommenting this gives a different error
using namespace std;
class Pen
{
public:
// attributes omitted
// PROTOTYPES:
// other functions omitted
void test();
};
#endif // PEN_H_INCLUDED
Pen.cpp:
#include <iostream>
#include "Pen.h"
using namespace std;
//other function definitions omitted
void Pen::test()
{
cout << "Test successful." << endl;
}
当我 运行 上面列出的代码时,我得到一个“对 `Pen::test()' 的未定义引用”错误。为了解决这个问题,我将 main.cpp 顶部的 #include 语句更改为:
#include <iostream>
//#include "Pen.h"
#include "Pen.cpp"
这按预期工作并正确打印出“测试成功”。
我的问题是:如果我以后无论如何都必须导入 .cpp 文件,那么将函数原型放在头文件中到底有什么意义?
编辑:原来这是一个不知道如何使用 Code::Blocks 而不是 C++ 语言的问题。
假设您使用的是 gcc,您可以通过命令行提供多个 .cpp
文件来一步编译和 link。
g++ Pen.cpp main.cpp
clang 应该是类似的。
clang++ Pen.cpp main.cpp
#include
应该永远不会 引用 .cpp
文件。完全没有。没有充分的理由这样做。包括您的 headers,然后在编译时提供 all .cpp
文件的名称。如果您的项目变大并且您有太多 .cpp
文件无法合理列出,那么是时候分解一个 makefile 或类似文件了。
在main.cpp
中包含头文件:
#include "Pen.h"
Pen.h
文件没问题。
您需要将 Pen.cpp
文件添加到项目树中。
转到项目 -> 添加文件...并添加 Pen.cpp