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

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,并读取了数十个条目(许多条目是在类中或在Linux下),但是我无法解决自己的问题(我不知道为什么)。
谢谢你的提示〜

在解决此问题之前,我别无选择,只能将所有工作人员都放在FeatureExtract.h中,它可以正常工作,但似乎不好。这篇文章(Why have header files and .cpp files in C++?)解释了.h文件的主要优点是“将接口与实现分开”,我想知道是否将所有接口和实现都放在.h文件中还会产生其他效果?

谢谢〜

最佳答案

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

另一个不太可能的可能性是两个cpp文件之间的名称修饰有所不同。确保使用C ++编译这两个文件,并且例如不要将其编译为C代码。

关于c++ - C++对方法的 undefined reference ,如果所有东西都转到.h怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11743974/

10-17 01:56