c++ - 如何创建同时适用于多种语言的包装器?

标签 c++ c swig cross-language

我有一个简单的 C API(N 个简单函数)。我想同时将它包装成 C#、Java 和 Python。如何同时调用 SWIG 为多种语言创建包装器?

像这样

swig.exe -c++ -csharp -java -namespace Bla outdir ./ -o ./BlaAPIWrapper.cxx BlaAPI.i

导致 swig 应用程序崩溃

Assertion failed: !this_, file Modules/lang.cxx, line 332

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

分别适用于每种语言。

最佳答案

只需使用不同的参数多次调用它,一次用于 Java,一次用于 C# 等。

您可能需要一些 shell 脚本来自动执行此操作,但是一旦您创建了生成包装器的脚本,只需调用该脚本即可。

如果 swig 不允许同时使用多种语言,或者如果该功能存在但存在错误(或者如果它存在但未记录且您无法使用),这可能是最简单的解决方案因为缺少重要信息)。

关于c++ - 如何创建同时适用于多种语言的包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872714/

相关文章:

c++ - 总模板特化

java - 将我的 Java 代码正确转换为 C (错误 : no matching function for call to 'power1' )

swig - 从结构 Java 类中删除 SWIG 生成的 Getter/Setter

mysql - 绑定(bind)的C mysql准备语句问题

android - 尝试使用 NDK 构建 PocketSphinxAndroidDemo 时出现问题

c++ - 如何阻止 SWIG 为类型宏抛出语法错误(c++ 到 python)

c++ - 断点在全屏模式下挂起基于 DirectX 的程序

c++ - C++ STL 中的确定性随机数流

c++ - 如何使函数永久更改全局数组

c - 为什么不能用双指针来表示二维数组呢?