如何从 C++ 使用 FTGL C API?

Posted

技术标签:

【中文标题】如何从 C++ 使用 FTGL C API?【英文标题】:How to use the FTGL C API from C++? 【发布时间】:2013-08-05 14:57:57 【问题描述】:

如何在 Visual Studio 2010 的 C++ 代码中使用 FTGL 的 C API?

FTGL uses #ifdef __cplusplus checks 从相同的头文件中导出 C 和 C++ API。

我试过了:

#ifdef __cplusplus
  #undef __cplusplus
  #include <FTGL/ftgl.h>
  #define __cplusplus
#else
  #include <FTGL/ftgl.h>
#endif

但是 VS2010 没有它:

warning C4117: macro name '__cplusplus' is reserved, '#undef' ignored
warning C4117: macro name '__cplusplus' is reserved, '#define' ignored

【问题讨论】:

你为什么要这么做?既然 FTGL 的标头会检测到 __cplusplus 本身,为什么你需要说你正在从 C 代码中查看标头来欺骗它呢?让标题完成它的工作。 因为我想在 C++ 代码中使用 C API。 【参考方案1】:

__cplusplus 是一个保留宏,如果您将其编译为 C++ 代码(并且没有以其他方式定义),则应该由您的编译器自动定义。您不必手动 #define 它,这就是您的编译器抛出错误的原因。

【讨论】:

【参考方案2】:

如何在 Visual Studio 2010 中通过 C++ 代码使用 FTGL 的 C API?

你没有。

FTGL 的制造商显然不希望 C++ 用户使用 C API。所以他们不让他们。

__cplusplus 宏是 C++ 语言的一部分;它不能是未定义的。或定义。或者重新定义。而且由于这就是 FTGL 的关键,所以没有办法让它合规。

避免这种情况的唯一方法是编辑 FTGL 本身。

【讨论】:

以上是关于如何从 C++ 使用 FTGL C API?的主要内容,如果未能解决你的问题,请参考以下文章

寻找例如使用 FTGL 和 Qt (OpenGL)

如何构建和使用 Google TensorFlow C++ api

OpenGL:使用 FTGL 和纹理

我无法使用 FTGL(未找到 ft2build.h)

如何使用 SWIG 在 C++ API 上生成 C 包装器? [复制]

为 C 消费包装 C++ 类 API