Linuxを使用していて、次のファイルがあります。
main.c, main.h
fileA.c, fileA.h
fileB.cpp, fileB.h
関数F1()
はで宣言されfileB.h
、で定義されていfileB.cpp
ます。で関数を使用する必要があるため、関数をfileA.c
次のように宣言しました
extern void F1();
でfileA.c
。
ただし、コンパイル中にエラーが発生しました
fileA.c: (.text+0x2b7): undefined reference to `F1'
なにが問題ですか?
ありがとうございました。
ETA:受け取った回答のおかげで、次のようになりました。
fileA.hには、
#include fileB.h
#include main.h
#ifdef __cplusplus
extern "C"
#endif
void F1();
fileA.cには、
#include fileA.h
fileB.hには、
extern "C" void F1();
fileB.cppには、
#include "fileB.h"
extern "C" void F1()
{ }
しかし、私は今エラーがあります
fileB.h: error: expected identifier or '(' before string constant