上周我一直在为这个问题发疯。
- Microsoft Visual Studio 社区 2013
- Freetype 2.5.5
- Windows 8.1
- 构建为 C++ 应用程序
我一直在尝试针对 Freetype 构建静态库,在使用附带的 VC2010 项目构建库后尝试过,并且还下载了预构建的库,但没有成功。我总是遇到下面同样的错误。我已经尝试过多个示例并且相同。我能够使用 gcc 成功编译和链接库(在构建 .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 时遇到了同样的问题。到目前为止,谷歌搜索结果似乎没有回答这个问题,所以我想我会分享,尽管该线程有点旧(但问题仍然是最近的!FreeType 2.6 版仍然遇到同样的问题)。
作为引用,这可以通过最小的示例来重现:
#include <ft2build.h>
#include FT_FREETYPE_H
FT_Library library;
所以问题和解决方案非常简单,但不幸的是被隐藏在输出日志中,乍一看并不那么明显,因此需要一些调查。
FreeType2 库和 Windows SDK 之间的 header 名称存在冲突,即与从以下位置拖入的 fttypes.h 文件发生冲突:
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\fttypes.h
相反,VS 应包含位于以下位置的 FT2 header :
your_FT2_root\include\fttypes.h
这很容易解决 - 在项目属性 (Alt+F7) 中重新排列 header 搜索路径,使 FreeType2 路径位于第一个(对我来说,将 FT2 放在顶部就像一个魅力)。
希望这有帮助!
干杯, 亨利克
关于c++ - 使用 Visual Studio 构建 Freetype 应用程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657837/