0

我在下面编写的简单 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文件中是否会有其他效果?

谢谢~

4

2 回答 2

1

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

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

于 2012-07-31T15:49:11.710 回答
0

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

于 2012-07-31T15:49:31.273 回答