2

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にリンクしようとしたときにまったく同じ問題が発生しました

ばかげているようですが、それが何であるかわかりません。なにか提案を?

ありがとうございました

4

1 に答える 1

0

あなたの行を確認しましたか

#ifndef __MYLIB_X_H
#define __MYLIB_X_H

_ MYLIB 1 _H と _ MYLIB 2 _H など、2 つのファイルで実際に異なるのは?

于 2013-08-22T08:55:51.617 に答える