表題の通り、visualStudio2013 で freeType2.5.3 と FTGL2.1.3 をビルドしようとすると、FTGLをビルドしようとした段階でC関連(コンパイル時の使用言語設定によってはC++関連)の構文エラーが出ます。freetypeはC、FTGLはC++でできていることから来るエラーだということまでは分かるのですが、これはvisualStudioの設定の変更によって解決できる問題なのでしょうか?
また、freetypeのビルドはDebug/Release共に成功、FTGLのパス設定やライブラリ設定も問題ありません。以前まではこのような問題は発生しなかったので、VSのエラー基準が厳しくなったのだろうかと想像しています。なお警告レベルを変更しても結果に変化はありません。
どなたか解決方法が分かる方、アドバイスよろしくお願いいたします。
#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++ -> 全般 の中の「追加のインクルードディレクトリ」の方へ追加してください。
あと、先ほど変更してもらった「ファイルの前処理」は「いいえ」に戻しておいてください。
これでもまだ同じエラーが出るようならファイル名を変更しないとダメでしょうね。
補足情報です。
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' の左側はクラス、構造体、共用体でなければなりません
VS2013EEを使っていますが、特に問題なく ftgl.dll が生成されました。
その発生したというエラーの内容がわからないことには答えようが無いのでは・・・
インクルードパスを通す作業は、ftgl_dllとftgl_staticの各プロジェクトのプロパティ→「VC++ディレクトリ」で、freeTypeフォルダ直下のincludeフォルダのパスをインクルードディレクトリに追加する、というものでした。この操作に誤りがあるのでしょうか?
中に個人名等が含まれているならそこは別の文字に置き換えてもらってかまいませんが、それ以外はそのままの状態で。
http://fast-uploader.com/file/6963792984367/
パス:onigiriTurnA
コマンドプロンプトを開いて
CL /P /FiC:\test\ftb.txt /I"C:\test\freetype-2.5.3\include" /I"C:\test\ftgl-2.1.3~rc5\src" /I"C:\test\ftgl-2.1.3~rc5\msvc" /Zi /nologo /W3 /WX- /O2 /Ob1 /D NDEBUG /D WIN32 /D _WINDOWS /D _USRDLL /D FTGL_LIBRARY /D _VC80_UPGRADE=0x0600 /D _WINDLL /D _MBCS /GF /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP /errorReport:prompt "C:\test\ftgl-2.1.3~rc5\src\FTBuffer.cpp"
とすると C:\test\ftb.txt が作成されるので、それをアップしてもらえますか?
>>
<<
http://fast-uploader.com/file/6963810021662/
passWord: onigiriTurnA
ソリューションエクスプローラの ftgl_dll を右クリックしてプロパティを開き、構成プロパティ-> C/C++ -> プリプロセッサ の巡にたどっていき、「ファイルの前処理」を「はい (/P)」に変更し[OK]を押してください。
ftgl_dll を右クリック -> ビルドでビルドすると
C:\test\ftgl-2.1.3~rc5\msvc\vc8\Release_ST\FTBuffer.i
が作成されるので、それを送ってください。
http://fast-uploader.com/file/6963815403440/
passWord: onigiriTurnA