gpt4 book ai didi

c++ - 文件包含错误 (C++) : undefined reference to ______

转载 作者:可可西里 更新时间:2023-11-01 18:29:45 27 4
gpt4 key购买 nike

每当我编译#include 用户定义类的东西时,我都会得到这些编译错误,这些错误总是看起来像:main.cpp: undefined reference to Complex::Complex(double, double)

我已将问题简化为一组三个极其简单的文件:main.cpp,例如 Complex.h 和 Complex.cpp。我仍然收到 undefined reference 错误。我在 Windows 上使用 Code::Blocks 进行开发,但在 Ubuntu 中使用 g++ 得到了同样的结果。为什么会这样?我尝试在 Code::Blocks 中的 main.cpp 之前构建 Complex.cpp,并且我尝试了 g++ main.cpp Complex.cpp 和我尝试的一样多 g++ main .cpp。每次都出现同样的错误。

/*======== main.cpp ========*/
#include "Complex.h"

int main()
{
Complex A(1.0, 1.0);
return 0;
}

/*======== Complex.h ========*/
#ifndef _COMPLEX_H
#define _COMPLEX_H

class Complex
{
public:
double x, y;
Complex(double real, double imag);
};

#endif

/*======== Complex.cpp ========*/
#include "Complex.h"

Complex::Complex(double real, double imag)
{
x = real;
y = imag;
}

ed:现在我得到了不同的错误,所以我一定是做错了什么。使用与上面相同的代码,我得到:

main.cpp: in function 'int main()':
main.cpp:5:5: error: 'Complex' was not declared in this scope
main.cpp:5:13: error: expected ';' before 'A'

这很奇怪。当我将类放在 .cpp 文件中时,一切都在早些时候工作,但这是“不好的做法”,所以我将我的类定义移到 .h 文件中,并将实现保留在 .cpp 文件中,但现在没有任何工作。

最佳答案

那不是编译错误,是链接错误。您需要确保将所有对象链接在一起。您可以通过几种方式做到这一点:

g++ main.cpp Complex.cpp

应该可以正常工作(当我尝试使用您的示例时,这里也是如此)。您也可以分步进行:

g++ -c main.cpp
g++ -c Complex.cpp
g++ main.o Complex.o

关于c++ - 文件包含错误 (C++) : undefined reference to ______,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com