如何通过 C++ 生成 C 包装器使用 SWIG 的 API?

发布于 2024-12-18 11:48:20 字数 459 浏览 0 评论 0原文

我想使用 SWIG 在某些 C++ API 上生成 C 包装器。

来自 SWIG 文档 SWIG 和 C++

6.2 方法

为了包装 C++,SWIG 使用分层方法来生成代码。在最低级别,SWIG 生成过程 ANSI-C 风格包装器的集合。这些包装纸负责 基本类型转换、类型检查、错误处理和其他底层细节 C++>绑定。这些包装器也足以将 C++ 绑定到任何目标语言 支持内置过程。从某种意义上说,您可能会将这一层包裹视为 为 C++ 提供 C 库接口。

但是,我没有看到任何选项可以做到这一点,而不生成使用 Python、Ruby 等语言中的 API 的代码。我怎样才能只获得 C 包装器?

I would like to generate C wrappers over some C++ API using SWIG.

From the SWIG documentation SWIG and C++:

6.2 Approach

To wrap C++, SWIG uses a layered approach to code generation. At the lowest level, SWIG
generates a collection of procedural ANSI-C style wrappers. These wrappers take care of
basic type conversion, type checking, error handling, and other low-level details of the
C++ >binding. These wrappers are also sufficient to bind C++ into any target language that
supports built-in procedures. In some sense, you might view this layer of wrapping as
providing a C library interface to C++.

However, I don't see any option to do just that, without generating code for using the API in a language like Python, Ruby, etc. How can I get just the C wrappers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦罢 2024-12-25 11:48:20

尽管 SWIG 的主要分支无法为 C++ API 生成 C 包装器(问题中引用的 SWIG 文档有点误导),但在 Google Summer of Code 2008 期间创建了一个 SWIG 分支,可在 https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-maciekd/ 就是这样做的。我在这里找到了答案: C++ to C Wrapper using SWIG (for FLTK )

Although the main branch of SWIG cannot generate C wrappers for C++ API (the SWIG documentation quoted in the question is a bit misleading), there is a SWIG branch created during Google Summer of Code 2008 and available at https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-maciekd/ which does just that. I have found the answer here: C++ to C Wrapper using SWIG (for FLTK)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文