SWIG不扩展宏定义

时间:2014-06-25 07:03:25

标签: c# c++ swig c-preprocessor

我需要包装一些C++类,以便在托管C#应用程序中使用它。

我有:

SWIG界面文件:

%module mylib
%{
#include "foo.h"
%}

%include <windows.i>
%include "foo.h"

foo.h

#ifndef FOO_H
#define FOO_H

#define _X(x) x
#define _Y _X

 /* line 6 */    _Y(void) dummy();

#endif // FOO_H

foo.cpp

#include "foo.h"
_Y(void) dummy() { }

SWIG无法使用以下消息生成包装:foo.h(6): Error: Syntax error in input(1)

似乎SWIG不会将_X(x)替换为x

有解决方法吗?

UPD1
Here正是运行的 SWIG命令行是:swig -csharp -c++ int.i

抛出foo.h(7) : Error: Syntax error in input(1).

如果我将#define _Y _X替换为#define _Y(x) _X(x),则可以正常使用。没关系,但实际上我无法更改头文件,因为它是第三方。

0 个答案:

没有答案