CライブラリのチェーンをC++メインプロジェクトに含めるという非常に些細な問題があります。C の経験はありますが、C++ でプログラミングするのは初めてです。
プロジェクトの構造は、内部にある単一のフォルダーです。
- main.cpp
- Mylib_1.c
- Mylib_1.h
- Mylib_2.c
- Mylib_2.h
メイン コール -> Mylib_1.h を呼び出す -> My_lib2.h
//main.cpp
#include "Mylib_1.h"
//Mylib_1.h
#include "Mylib_2.h"
main には Mylib_1 と Mylib_2 の両方の関数と typedef 構造体が含まれています
Mylib_1 は、Mylib_2 の typedef 構造体と関数を使用します
各 Mylib_x.h 内のすべては、次のように extern "C" でラップされます。
#ifndef __MYLIB_X_H
#define __MYLIB_X_H
#ifdef __cplusplus
extern "C" {
#endif
mycode
#ifdef __cplusplus
}
#endif
#endif
しかし、Ubuntu 12.04 x64 で eclipse kepler を使用してコンパイルしようとすると、次のようになります。
Mylib_1.h エラー: Mylib_2_type_t に型名がありません
main.cpp エラー: Mylib_2_function1 はこのスコープで宣言されていません
...
上記のセクションのみがEclipseでエラーとしてマークされ、ヘッダーは正常に含まれているように見えます。
さらに、Eclipse によると、__cplusplus フラグは Mylib_2.h では false ですが、Mylib_1.h では true です。
いくつかのEclipseエラーを考えて、g ++(v4.6.3)を介してプロジェクトを手動でビルドしようとしましたが、ライブラリ.oをmain.cppにリンクしようとしたときにまったく同じ問題が発生しました
ばかげているようですが、それが何であるかわかりません。なにか提案を?
ありがとうございました