C++;方法的未定义引用,如果所有内容都转到.h怎么办? 下面写的简单C++代码得到编译错误 “对'featureExtract()'的未定义引用”(在windows下使用代码块)

C++;方法的未定义引用,如果所有内容都转到.h怎么办? 下面写的简单C++代码得到编译错误 “对'featureExtract()'的未定义引用”(在windows下使用代码块),c++,extern,undefined-reference,C++,Extern,Undefined Reference,在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 } #inclu

在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
}
#include "FeatureExtract.h"
int main()
{
    featureExtract();
}
main.cpp

#include "FeatureExtract.h"
void featureExtract()
{
    some code
}
#include "FeatureExtract.h"
int main()
{
    featureExtract();
}
我使用关键字“C++undefined reference to”搜索了SO,并阅读了数十条条目(其中许多是到类或在Linux下),但我无法解决自己的问题(我不知道为什么)。
谢谢你的提示~

在解决这个问题之前,我别无选择,只能把所有的工作人员放在FeatureExtract中。h,它工作正常,但看起来不太好。本文()解释了.h文件的主要优点是“将接口与实现分离”,我想知道将所有接口和实现放在.h文件中是否会有其他效果


谢谢~

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


另一种不太可能的可能性是,两个cpp文件之间的名称装饰不同。确保你用C++编译文件,而不是编译成C代码。

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

所有文件都在同一个代码块项目中吗?谢谢大家,@Mark B@Zeta@Frobzig,我解决了这个问题。我从项目中删除
.h
.cpp
,然后将它们添加回项目,不再出现错误。我想这是因为我曾经更改了
.h
文件名,然后又重新更改了名称,发生了一些不可见的事情。