C语言嵌入联接swig是一款非常优秀的c语言开源工具,它能有效帮助用户将 C/C++ 代码与任何主流脚本语言相集成。英文名为Simplified Wrapper and Interface Generator,简单称SWIG。
SWIG 基础知识
SWIG 接口文件语法是 C 的一个超集。SWIG 通过一个定制 C 预处理器处理它的输入文件。此外,接口文件中的 SWIG 操作通过一个百分比符号 (%) 后跟的特殊的指令(%module、%constant 等)来控制。SWIG 接口还允许您定义以 %{ 开头和以 %} 结束的信息块。%{ 和 %} 之间的所有内容会原封不动地复制到生成的包装器文件中。
模块名称的更多信息
可通过指定 %module "rubytest::test34::example,定义一个深度嵌套模块 rubytest::test34::example。另一个选项是将 %module example 放在接口代码中,在命令行添加 rubytest::test34 作为它的前缀,如下所示:
SWIG 接口文件必须以 %module 声明开头,例如 %module module-name,其中 module-name 是目标语言扩展模块的名称。如果目标语言是 Ruby,这类似于创建一个 Ruby 模块。可以提供命令行选项 –module module-name-modified 来改写模块名称:在本例中,目标语言模块名称为(或许您已猜到)module-name-modified。现在,让我们看看常量。
SWIG模块初始化功能
SWIG 拥有一个特殊指令 %init,用于定义模块初始化功能。%{ … %} 代码块中 %init 之后定义的代码会在模块加载时调用。以下是代码:
%module test
%constant char* Text = “Hello World with SWIG”
%init %{
printf(“Initialization etc. gets done here\n”);
%}
现在重新启动 IRB。以下是在加载模块后得到的代码:
irb(main):001:0> require 'test'
Initialization etc. gets done here
=> true