2017-01-26 14 views
0

以下は、FreeTypeライブラリをインクルードしようとしているengine_text.hファイルです。このヘッダファイルにライブラリを含めて、他のプロジェクトファイルで使用できる構造体を定義できるようにします。Cヘッダーファイルにfreetypeヘッダーファイルを含めると、エラーが発生しますが、.cファイルに含めることができるのはなぜですか?

#ifndef H_ENGINE_TEXT 
#define H_ENGINE_TEXT 

#include <ft2build.h> 
#include FT_FREETYPE_H 

typedef struct 
EngineFont 
{ 

    FT_Library Library; 
    FT_Face Face; 

} EngineFont; 

void 
LoadFont(char* FontPath); 

#endif 

これをコンパイルしようとすると、しかし、私は、Visual Studioのcl.exeのコンパイラから次のエラーを取得:それは含めているため、エラーがengine_main.cから来ていることを

engine_main.c 
h:\Engine\code\freetype/freetype.h(947): error C2208: 'FT_Face_InternalRec_ *': no members defined using this type 
h:\Engine\code\freetype/freetype.h(1317): error C2208: 'FT_Size_InternalRec_ *': no members defined using this type 
h:\Engine\code\freetype/freetype.h(1549): error C2208: 'FT_Slot_InternalRec_ *': no members defined using this type 

注意engine_text.hヘッダーファイル何らかの理由で、ヘッダーではなくengine_text.cファイルにFreeTypeインクルードを置くと、プログラムは問題なくコンパイルされ実行されます。もちろん、構造体を定義することはできません。これは私が行うために必要です。

engine_main.cは次のようになります。

#include "engine_main.h" 

#include <SDL/SDL.h> 
#include <GL/glew.h> 

#include "engine_sdl.h" 
#include "engine_shader.h" 
// The problematic one: 
#include "engine_text.h" 

なぜそれが含まれている場合は、それは非常に多くの問題を引き起こし、別のヘッダファイルで行われていることでしょうか?私はC2208エラーが実際に私に示していることもよく分かりません。

+0

コンパイルされた場所に 'engine_main.c'を指定してください。 –

+0

上記のengine_main.cを追加しました。 @StephanLechner – utterfool

+0

これはうまくいきません。 'engine_main.c'は動作するバリアントでどのように見えますか? –

答えて

0

FT_LibraryタイプとFT_Faceタイプが意図したとおりに動作しないと仮定します。 structに梱包することで、「実際の」問題はC2208のもので覆われるかもしれません。これはメンバーのない構造体を定義していることを示しています(誤解を招く恐れがあります)。

だけで物事を見つけるために、以下のengine_main.cを試してみてください。

#include "engine_main.h" 

#include <SDL/SDL.h> 
#include <GL/glew.h> 

#include "engine_sdl.h" 
#include "engine_shader.h" 

#include <ft2build.h> 
#include FT_FREETYPE_H 

FT_Library Library; 
FT_Face Face; 

及びこれらの宣言が働くかどうかを確認します。次に、次のステップに進みましょう。

+0

私はこの変種にengine_main.cを変更したとき、私は同じC2208エラーを受け取ります。 – utterfool

+0

EngineFont構造体を削除しましたか? –

+0

それは正しいです。 – utterfool

関連する問題