上周我一直在讨论这个问题。
我一直在尝试构建针对Freetype的静态库,我在使用附带的VC2010项目构建lib并尝试下载预先构建的库时没有运气。我总是在下面得到同样的错误。我尝试了多个例子和相同的例子。我能够使用gcc成功编译和链接lib(在构建.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;
}
答案 0 :(得分:3)
使用VS2013工具集(SDK)在VS2013中构建FreeType2时遇到了同样的问题。到目前为止,似乎没有谷歌搜索结果对此有所回应,所以我认为即使线程有点旧也会分享(但问题仍然是最近的!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就像魅力一样)。
希望这有帮助!
干杯, 亨里克