如何通过 C++ 生成 C 包装器使用 SWIG 的 API?
我想使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尽管 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)