【发布时间】:2014-03-01 20:02:40
【问题描述】:
我的标题中有 sample.h 这个:
#include <iostream>
#ifdef SWIG
int a = 0;
#endif
在我的sample.i 这个:
%module sample
%{
#include "sample.h"
%}
#include "sample.h"
但是,我看不出有和没有#ifdef SWIG 之间有什么区别......
您能告诉我在哪里以及如何找到不同之处吗?会是什么?
非常感谢!
【问题讨论】:
-
您希望看到什么不同?你只是创建了一个全局变量,你并没有真正使用它......
-
我希望在生成的 *.cxx 文件中找到它,对我来说它是
sample_wrap.cxx。但是我对变量a什么也没有发现......所以也许你的意思是“我看不到的全局变量”a将在 SWIG 编译时创建?那么我在哪里可以使用它呢?是否仅在#ifdef #endif之间? -
C++ 中的
#include不像 PHP 中的include那样工作。它实际上并没有将代码从一个文件放入另一个文件,它只是让它对编译器可见。谷歌“C++ 预处理器指令”以获得更多帮助。 -
使用#ifdef SWIG 的目的是将SWIG 指令放入编译器不会看到的文件中。它们以 % 开头。
int a = 0;不是 SWIG 指令。您必须使用 RTFM,至少第 1.7 章 -
你用来生成 _wrap.cxx 文件的 swig 命令是什么?