我需要包装一些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)
,则可以正常使用。没关系,但实际上我无法更改头文件,因为它是第三方。