未定义的引用错误,即使应该包含的文件在同一个文件夹中
C++ -Undefined Reference bug, eventhough files that shall be included are in same folder
我有一些代码的问题,这些代码分布在不同的文件上。我有一个main.cpp,其中方法被调用。在这个main.cpp中,我包含了一个"declarationen .h",它用方法的签名声明了这些方法。例如void "average(float, float&);"
方法体在"average.cpp"文件中。但是当我尝试编译我的main.cpp时,我得到以下错误代码"main.o:main.cpp||未定义引用' average(float, float&)'"。
所有文件都在同一个目录中,正如我所说的,我将头文件包括在我的main.cpp中。
提示:我使用Code::Blocks与ming32-gpp编译器。
我做了什么可怕的错误,还是它是一个编译器的错误或什么?
的问候代码:Main.cpp
#include "deklarationen.h"
#include <iostream>
using namespace std;
int main ()
{
//body of the function
average(b,mittel);
}
代码:Deklarationen.h(同一文件夹)
#ifndef _DEKLARATIONEN_H_
#define _DEKLARATIONEN_H_
float a;
void einlesen(float &a, float &b);
void average(float, float &avg);
void quotient(float, float&);
void produkt(float b, float& quot);
float summe(float);
extern float differenz(float);
#endif /* _DEKLARATIONEN_H_ */
代码:average.cpp(还是同一个文件夹)
void average(float b,float &avg)
{
avg = (a+b)/2;
}
当您编译c++代码时,会发生以下(简化的)步骤:
- 预编译(替换包含,宏…)
- 对象文件生成。
- 链接。
步骤1工作得很好,否则您将得到一个编译器错误。你在第二步或第三步中有问题,或者两者都有问题。"未定义的引用"错误意味着链接器没有找到对方法的编译版本的引用。
首先,您应该检查是否正在构建所有的目标文件。您可以通过查看编译器输出并查看是否看到任何类似g++ filename ..的消息来判断这一点。文件名。O,或者在构建目录中查看是否有*。
*.cpp文件最后一步是链接,链接器将所有的。o文件连接成一个可执行文件。
我不使用CodeBlocks,但可能你的问题是你需要指示代码块将包含缺失引用的文件包含到构建中。
或者你可以手工编写一个makefile,学习cmake,或者从命令行编译,所有有用的技能
我看到你发布了代码块正在执行的构建命令:
"mingw32-g++.exe -c main.cpp -o main. exe "0 " "mingw32-g++.exe - 0 main.exe main.o
这里只编译main文件,没有编译或链接其他文件
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- C++文件包含多行
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- C++ 逐行从文件(包含空格)读取数据
- 在 C++ 中,.h 文件包含文件但不起作用
- 生成的资源文件包含奇怪的包含文件
- 可变参数类的文件包含问题
- 为什么文件命令声明可执行文件包含"debug_info"
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 为什么将.HPP文件包含在.h文件中
- Qt C++:将所有库文件包含在项目文件夹中
- 有条件地将文件包含在C++标头中
- 将多个原型文件包含在一个项目中会导致protobuf_AssignDescriptorsOnce()已经有一个主体
- 有没有办法将文件包含在C++中的所有项目文件中
- 将外部.asm文件包含到C++代码中
- 什么是"pch.h",为什么需要将其作为第一个头文件包含在内?
- 该头文件包含DirectX 12中的ThrowIfFailed()
- QT C :函数的多个定义当Header文件包含在MainWindow.h中时
- QT创建者错误地处理标头文件包含来自Directory