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ファイルがプロジェクトに追加されていることを確認してください。

あまりありそうにないもう 1 つの可能性は、名前の装飾が 2 つの cpp ファイル間で何らかの形で異なっていることです。C++ を使用して両方のファイルをコンパイルしていることと、たとえば C コードとしてコンパイルされていないことを確認してください。

于 2012-07-31T15:49:11.710 に答える
0

あなたが投稿したコードはうまく見えます。ゼータが言ったように、すべてのファイルは同じプロジェクトにありますか?

于 2012-07-31T15:49:31.273 に答える