SWIG raise 语法错误 - 可能缺少分号

问题描述 投票:0回答:1

我是 SWIG 新手
我正在尝试为 python 制作一个 dll 包装器

  • 以下是SWING接口文件的内容
%module IviDCPwr
%{
#include <stdarg.h>
#include <limits.h>
#include <sys.types.h>
#include "visatype.h"
#include "visa.h"
#include "ivi.h"
#include "IviVisaType.h"
#include "IviDCPwr.h"
#include "IviDCPwrObsolete.h"
%}
%include "IviDCPwr.h"
  • 以下是我使用的命令
.\swig.exe -I"C:/Program Files (x86)/IVI Foundation/IVI/Include" -I"C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include" -python "IviDCPwr.i"
  • 下面是上述命令的结果
C:\Program Files (x86)\IVI Foundation\IVI\Include\IviDCPwr.h(179) : Error: Syntax error - possibly a missing semicolon (';').
  • 以下是IviDCPwr.h的部分
168: #define IVIDCPWR_VAL_TRIG_RTSI_4                            (18L)
169: #define IVIDCPWR_VAL_TRIG_RTSI_5                            (19L)
170: #define IVIDCPWR_VAL_TRIG_RTSI_6                            (20L)
171: 
172: #define IVIDCPWR_VAL_TRIG_SRC_CLASS_EXT_BASE                (500L)
173: #define IVIDCPWR_VAL_TRIG_SRC_SPECIFIC_EXT_BASE             (1000L)
174: 
175: /****************************************************************************
176:  *--------- IviDCPwr Class Instrument Driver Function Declarations ---------*
177:  ****************************************************************************/
178:     /*- Required VXIplug&play Functions -*/
179: ViStatus _VI_FUNC IviDCPwr_init (ViRsrc logicalName, 
180:                                  ViBoolean idQuery, 
181:                                  ViBoolean resetDevice, 
182:                                  ViSession *vi);
183: 
184: ViStatus _VI_FUNC IviDCPwr_close (ViSession vi);
185: 
186: ViStatus _VI_FUNC IviDCPwr_reset (ViSession vi);
187: 
188: ViStatus _VI_FUNC IviDCPwr_self_test (ViSession vi, 
189:                                       ViInt16 *selfTestResult, 
190:                                       ViChar selfTestMessage[]);
191: 
192: ViStatus _VI_FUNC IviDCPwr_error_query (ViSession vi, 
193:                                         ViInt32 *errorCode, 
194:                                         ViChar errorMessage[]);

python swig
1个回答
0
投票

这很可能是由并非来自此文件的

 _VI_FUNC
定义引起的,并且 SWIG 对此一无所知。

添加

#define _VI_FUNC

像这样:

%module IviDCPwr
#define _VI_FUNC
%{
#include <stdarg.h>
#include <limits.h>
#include <sys.types.h>
#include "visatype.h"
#include "visa.h"
#include "ivi.h"
#include "IviVisaType.h"
#include "IviDCPwr.h"
#include "IviDCPwrObsolete.h"
%}
%include "IviDCPwr.h"
© www.soinside.com 2019 - 2024. All rights reserved.