我在下面编写的简单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/