C++对方法和What-if所有东西都转到.h的未定义引用

C++ undefined reference to method and What if all stuff go to .h?

本文关键字:引用 未定义 方法 What-if C++      更新时间:2023-10-16

我在下面写的简单C++代码出现编译错误
"对'featureExtract'()'的未定义引用"(在窗口下使用代码块),

FeaureExtract.h

#ifndef FEATUREEXTRACT_H_INCLUDED
#define FEATUREEXTRACT_H_INCLUDED
extern void featureExtract();
#endif // FEATUREEXTRACT_H_INCLUDED

FeatureExtract.cpp

#include "FeatureExtract.h"
void featureExtract()
{
    some code
}

main.cpp

#include "FeatureExtract.h"
int main()
{
    featureExtract();
}

我使用关键字"C++undefined-reference to"搜索了SO,并阅读了数十个条目(其中许多是class或Linux下的条目),但我无法解决自己的问题(我不知道为什么)
感谢任何提示~

在解决这个问题之前,我别无选择,只能把所有的工作人员都放在FeatureExtract.h中,它有效,但似乎不好。这篇文章(为什么C++中有头文件和.cpp文件?)解释了.h文件的主要优点是"将接口与实现分离",我想知道将所有接口和实现放在.h文件中是否会有其他效果?

谢谢~

看起来您没有将两个对象文件链接到最终的二进制文件中。不幸的是,我不熟悉代码块,但请确保所有的.cpp文件都已添加到您的项目中。

另一种不太可能的可能性是,两个cpp文件之间的名称装饰有所不同。确保您使用C++来编译这两个文件,并且其中一个文件不会编译为C代码。

您发布的代码看起来不错。正如泽塔所说,所有文件都在同一个项目中吗?