使用Visual Studio构建Freetype应用程序的错误

时间:2015-04-15 18:19:47

标签: c++ windows visual-studio visual-studio-2013 freetype

上周我一直在讨论这个问题。

  • Microsoft Visual Studio Community 2013
  • Freetype 2.5.5
  • Windows 8.1
  • 构建为C ++应用程序

我一直在尝试构建针对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;
}

1 个答案:

答案 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就像魅力一样)。

希望这有帮助!

干杯, 亨里克