在python中将int转换为int *

时间:2014-03-20 18:03:13

标签: python c++

我们正在使用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 *

1 个答案:

答案 0 :(得分:0)

我们必须在接口文件中包含“cpointer.i”接口(使用SWIG将C ++连接到Python)。有关详细信息,请参阅http://www.swig.org/Doc2.0/Library.html#Library