c++ - 使用 Visual Studio 构建 Freetype 应用程序时出错

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

上周我一直在为这个问题发疯。

  • 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/

相关文章:

c++ - 静态构建 Windows 应用程序时出错

visual-studio - 您对 Visual Studio 2010 CTP 的体验?

c# - 找不到类型或命名空间名称(存在引用)

c++ - 有人能弄清楚这有什么问题吗?我收到链接错误

c++ - 嵌套在函数中的函数声明的命名空间

windows - 为什么空变量会导致崩溃

windows - Cygwin winsymlinks :native doesn't work

windows - 从子程序返回变量,不工作...为什么?

visual-studio - 在 Visual Studio 中更改成员变量的字体

c++ - 每次发出信号时都会多次调用插槽