人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

visualStudio2013 で freeType / FTGL のビルドが失敗します。

表題の通り、visualStudio2013 で freeType2.5.3 と FTGL2.1.3 をビルドしようとすると、FTGLをビルドしようとした段階でC関連(コンパイル時の使用言語設定によってはC++関連)の構文エラーが出ます。freetypeはC、FTGLはC++でできていることから来るエラーだということまでは分かるのですが、これはvisualStudioの設定の変更によって解決できる問題なのでしょうか?

また、freetypeのビルドはDebug/Release共に成功、FTGLのパス設定やライブラリ設定も問題ありません。以前まではこのような問題は発生しなかったので、VSのエラー基準が厳しくなったのだろうかと想像しています。なお警告レベルを変更しても結果に変化はありません。

どなたか解決方法が分かる方、アドバイスよろしくお願いいたします。

●質問者: onigiriTurnA
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

補足情報です。

OS: windows7 64bit
visualStudio2013: v12.0.30723.00 Update3
使用したfreetype: ft253.zip
使用したFTGL: ftgl-2.1.3-rc5.tar.gz

エラーは100個以上出ていますが、だいたいは以下のようなものです。

error C2143: 構文エラー : '}' が '(' の前にありません。
error C2146: 構文エラー : ';' が、識別子 'library' の前に必要です。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2065: 'FT_GlyphSlot' : 定義されていない識別子です。
error C2535: 'FTBBox::FTBBox(void)' : メンバー関数は、既に定義または宣言されています。
error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません


1 ● siachan
●100ポイント ベストアンサー

#line 1 "C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\shared\\fttypes.h"

おそらくこれが原因ではないかと。

freetype.h の中で fttype.h を取り込んでいるのですが、freetype の物では無くて WDK の物が取り込まれています。なので一部のマクロが定義されていません。

ビルドログを見た感じでは、構成プロパティ -> VC++ ディレクトリ の「インクルードディレクトリ」の方に freetype の include フォルダを追加しているようなので、構成プロパティ -> C/C++ -> 全般 の中の「追加のインクルードディレクトリ」の方へ追加してください。

あと、先ほど変更してもらった「ファイルの前処理」は「いいえ」に戻しておいてください。

これでもまだ同じエラーが出るようならファイル名を変更しないとダメでしょうね。


onigiriTurnAさんのコメント
回答ありがとうございます。 ご指示にあった内容の通り作業しましたが、やはり変化が無かったため、visualStudioを再インストールし同じ条件でビルドしてみた所、問題なくビルドが完了しました。この問題が突然起こった事を含めてなんだか釈然としませんが、とりあえず原因が分かっただけでも本当に助かりました。 ところでさらに質問して恐縮なのですが、 「VC++ ディレクトリ」->「インクルードディレクトリ」へのincludeフォルダの追加と、「C/C++」->「全般」へのフォルダの追加にはどういった意味の違いがあるのでしょうか?

siachanさんのコメント
うーん、ダメでしたか。おかしいですねえ。 とりあえず、「VC++ ディレクトリ」->「インクルードディレクトリ」は環境変数INCLUDEで、「追加のインクルードディレクトリ」はコマンドラインオプションの /I の指定ってことだと思います。 環境変数より /I での指定の方が優先されるそうなので、これでいけるかと思ったんですが・・・

onigiriTurnAさんのコメント
はい、再インストール前の環境ではダメでした…。 環境変数とコマンドラインオプションの違い、なるほどそうだったんですね。ありがとうございます!実際、再インストールした環境でも「追加のインクルードディレクトリ」で指定しないとこれまでと同じエラーが出るようでした。大変勉強になりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ