The SWIG 文档 http://www.swig.org/Doc2.0/Preprocessor.html这两个指令解释如下:
%include
:“要将另一个文件包含到 SWIG 界面中,请使用%include
指令...不同的是,#include
, %include
包含每个文件一次(并且不会在后续时重新加载该文件%include
声明)。因此,没有必要在 SWIG 接口中使用包含防护。”
%import
:“SWIG 提供了另一个文件包含指令%import
指令...的目的%import
是从另一个 SWIG 接口文件或头文件收集某些信息,而不实际生成任何包装器代码。此类信息通常包括类型声明(例如,typedef)以及可能用作接口中类声明的基类的 C++ 类。 ”
我的问题是这两个指令之间有什么区别以及使用每个指令的优点/缺点是什么?
附:只是为了一些背景信息。我有一个简单的 C++ - python 扩展,当我使用上述任一指令时,它会构建并运行。然而一(%import
) 当我打电话时发出的警告更少swig -c++ -python my_file.i
.
SWIG 的工作方式是假设您提供的任何有效 C++ 声明都将公开给目标语言。因此,SWIG 提供的任何 C++ 代码都将用于生成接口。
%import
是一种包容机制prevents为其包含的代码生成接口。这就是区别。因此,在包含标头时要问的问题是:“我是否希望标头中的所有内容都暴露给目标语言?”如果答案是“否”,那么您使用%import
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)