6.4 命令行选项与编译

包装 C++代码时,非常重要的一点是要使用”-C++”命令行选项。该选项将改变一些SWIG的重要特性,如内存管理方式等。这将开启对C++关键字的识别。没有该选项,SWIG在处理包含C++代码的接口文件时不但会提示警告而且还会遇到大量语法错误提示。

当编译并连接结果包装文件时,一般使用C++编译器。例如:

  1. $ swig -c++ -tcl example.i
  2. $ c++ -fPIC -c example_wrap.cxx
  3. $ c++ example_wrap.o $(OBJS) -o example.so

不幸地是,每个平台的处理方式都不太一样。确保你参考了相关目标语言的文档获取了更多的相关细节了。SWIG的wiki上也有详细信息。

兼容性注释:早期版本的SWIG默认情况下只生成展开的底层的C风格的API。-noproxy选项可被多数的目标语言识别,它会只生成这种早期类型的接口。