这个问题上周我一直在疯狂。
我一直在试图build立一个针对Freetype的静态库,我已经尝试使用包含的VC2010项目构build库,并且下载了一个没有运气的预build库。 我总是得到下面相同的错误。 我已经尝试了多个例子和相同的。 我能够成功地编译和链接使用gcc的lib(build立一个.a库后),这个问题似乎孤立到Visual Studio ..
1>f:\audio\libs\header\freetype\fterrdef.h(35): error C2143: syntax error : missing '}' before '(' 1>f:\audio\libs\header\freetype\fterrdef.h(35): error C2143: syntax error : missing ';' before '<L_TYPE_raw>' 1>f:\audio\libs\header\freetype\fterrdef.h(35): error C2059: syntax error : '<L_TYPE_raw>' 1>f:\audio\libs\header\freetype\fterrors.h(164): error C2143: syntax error : missing ';' before '}' 1>f:\audio\libs\header\freetype\fterrors.h(177): error C2059: syntax error : '}' 1>f:\audio\libs\header\freetype\fterrors.h(177): error C2143: syntax error : missing ';' before '}' 1>f:\audio\libs\header\freetype\freetype.h(38): error C2143: syntax error : missing ';' before '{' 1>f:\audio\libs\header\freetype\freetype.h(38): error C2447: '{' : missing function header (old-style formal list?)
可能导致此错误的示例代码:
#include <windows.h> #include <ft2build.h> #include FT_FREETYPE_H int main(int argc, char **argv) { return 0; }
使用VS2013工具集(SDK)在VS2013中构建FreeType2时遇到同样的问题。 目前还没有Google的结果可以回答这个问题,所以我认为即使线程已经老化了也可以共享(但问题仍然是最近的!FreeType版本2.6仍然存在同样的问题)。
作为参考,可以通过最简单的例子来复制:
#include <ft2build.h> #include FT_FREETYPE_H FT_Library library;
所以问题和解决办法很简单,但不幸的是埋在输出日志里,一开始并不明显,所以需要一些调查。
FreeType2库和Windows SDK之间有一个名称冲突 ,即从fttypes.h文件被拖入:
C:\ Program Files(x86)\ Windows Kits \ 8.1 \ Include \ shared \ fttypes.h
相反,VS应该包括FT2头位于:
your_FT2_root \包括\ fttypes.h
这很容易解决 – 在你的项目属性(Alt + F7)重新安排标题搜索路径,所以FreeType2路径是第一(对于我把FT2的顶部工作像一个魅力)。
希望这可以帮助!
干杯,亨利克