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

Posted

技术标签:

【中文标题】使用 Visual Studio 构建 Freetype 应用程序时出错【英文标题】:Errors building Freetype application with Visual Studio 【发布时间】:2015-04-15 18:19:46 【问题描述】:

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

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

我一直在尝试针对 Freetype 的静态库进行构建,我在使用包含的 VC2010 项目构建库之后尝试过,并且还下载了预构建的库,但没有成功。我总是在下面得到相同的错误。我已经尝试了多个示例并且相同。我能够使用 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】:

我在使用 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\include\fttypes.h

这很容易解决 - 在您的项目属性 (Alt+F7) 中重新排列标题搜索路径,以便首先使用 FreeType2 路径(对我来说,将 FT2 放在顶部就像一个魅力)。

希望这会有所帮助!

干杯, 亨利克

【讨论】:

以上是关于使用 Visual Studio 构建 Freetype 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013

使用 Visual Studio 构建 qt 项目

使用 Cmake 为 Visual Studio 2015 构建 OpenCV 3.0.0 的 DLL

是否可以使用 Visual Studio 构建 WinDBG 扩展?

无法使用 Visual Studio 2015 构建一个简单的项目

为 Visual Studio 开发构建 FFMPEG