我们正在使用SWIG使用Python测试C ++ API。 C ++中的一种方法需要int *
int fnClicTestIntPtr(int *)
;它只是在返回值处添加一个。我试图在Python中调用此方法并测试输出。你能否告诉我如何在Pyhton中通过int*
。
我的界面文件如下所示:
%module ClicTest
%{
#include "ClicTest.h"
%}
%include <windows.i>
%include "ClicTest.h"
标题文件:
#ifdef CLICTEST_EXPORTS
#define CLICTEST_API __declspec(dllexport)
#else
#define CLICTEST_API __declspec(dllimport)
#endif
// This class is exported from the ClicTest.dll
class CLICTEST_API CClicTest {
public:
CClicTest(void);
// TODO: add your methods here.
};
extern CLICTEST_API int nClicTest;
CLICTEST_API int fnClicTest(void);
CLICTEST_API int fnClicTestInt(int);
CLICTEST_API char* fnClicTestChar(char *);
CLICTEST_API int fnClicTestIntPtr(int *);
CLICTEST_API int fnClicTestVoidPtr(void *);
CLICTEST_API char* fnClicTestCharPtr(char *);
CLICTEST_API long fnClicTestLongPtr(long *);
我尝试传递一个数字,也尝试使用ctypes.byref和ctypes.pointer方法。但没有任何成功。就像下面
Py文件:
print(ClicTest.fnClicTestLongPtr(ctypes.pointer(num)))
print(ClicTest.fnClicTestLongPtr(num))
print(ClicTest.fnClicTestLongPtr(ctypes.byref(num)))
-
Error : TypeError: in method 'fnClicTestIntPtr', argument 1 of type 'int *
答案 0 :(得分:0)
我们必须在接口文件中包含“cpointer.i”接口(使用SWIG将C ++连接到Python)。有关详细信息,请参阅http://www.swig.org/Doc2.0/Library.html#Library