SWIG: %import和%include的区别
SWIG: difference between %import and %include
SWIG文档对这两个指令的解释如下:
-
%include
: "要将另一个文件包含到SWIG接口中,请使用%include
指令…与#include
不同,%include
包含每个文件一次(并且不会在随后的%include
声明中重新加载文件)。因此,没有必要在SWIG接口中使用include-guard。" -
%import
: "SWIG提供了%import
指令的另一个文件包含指令…%import
的目的是从另一个SWIG接口文件或头文件收集某些信息,而不实际生成任何包装器代码。这些信息通常包括类型声明(例如,typedef)以及可以用作接口中类声明的基类的c++类。"
我的问题是这两个指令之间有什么区别,使用每个指令的优缺点是什么?
注:只是为了了解一些背景信息。我有一个简单的c++ - python扩展,当我使用上述任何一个指令时,它都可以构建和工作。然而,当我调用swig -c++ -python my_file.i
时(%import
)给出的警告较少。
SWIG的工作方式是,它假定您提供的任何有效的c++声明都将公开给目标语言。因此,提供SWIG的任何c++代码都将用于生成接口。
%import
是一个包含机制,阻止生成它所包含的代码的接口。这就是区别。所以在包含头信息时你要问的问题是,我是否希望这个头信息中的所有内容都暴露给目标语言如果答案是"否",则使用%import
。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 既然存在危险,为什么项目要使用-I include开关
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何将更多文件夹添加到c++include路径
- 什么是"#include <boost/functional/hash.hpp> "?
- C++ - "!pointer"和"pointer == nullptr"的区别?
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- #include "MyClass.h" 和 #include ".myclass.h" 有什么区别
- 来自 C 的指令 #include 和来自 C++ 的指令之间有什么区别吗?
- #include <file> #include < file.h> - 有什么区别?
- #include 和复制粘贴有什么区别?
- <iostream> #include 中和"iostream"(引号)之间的区别?
- 使用 std::vector 和 include <vector>之间的区别
- C++中include指令和forward声明之间的区别
- #include<> 和 #define " " 有什么区别
- SWIG: %import和%include的区别
- "%include"和"#include"的区别