當我訪問具有雙指針作爲參數的函數時,我對swig非常陌生,並且得到了一個奇怪的TypeError。TypeError:無法使用雙指針參數訪問包裝函數
這裏是我的文件:
Example.hpp
#ifndef _EXAMPLE_HPP
#define _EXAMPLE_HPP
class Example {
public:
void test_cc(char * c0, char * c1);
void test_cd(char * c0, double d0);
void test_cdp(char * c0, double * d0);
};
#endif // _EXAMPLE_HPP
Example.cpp
#include "Example.hpp"
void Example::test_cc(char * c0, char * c1) {}
void Example::test_cd(char * c0, double d0) {}
void Example::test_cdp(char * c0, double * d0) {}
Example.i
%module Example
%{
#include "Example.hpp"
%}
#include "Example.hpp"
最後我testfile的test_Example.py :
#!/usr/bin/env python
import Example
E = Example.Example()
E.test_cc("Hello","World");
E.test_cd("Hello",42);
E.test_cdp("Hello",42);
當我運行./test_Example.py,我得到錯誤信息
Traceback (most recent call last):
File "./test_Example.py", line 9, in <module>
E.test_cdp("Hello",42);
File "Example.py", line 77, in test_cdp
def test_cdp(self, *args): return _Example.Example_test_cdp(self, *args)
TypeError: in method 'Example_test_cdp', argument 3 of type 'double *'
訪問test_cc工作的功能,test_cd也......爲什麼不test_cdp?
我的錯誤在哪裏?
我想從python訪問C++ fcuntion test_cdp,而不是從C++。 – redimp
再次編輯答案......但這是我首先說的。我這次提供了一個工作示例。 –
我想通過一個雙*。不是雙倍。 test_cd的作品,但不是我想要的。 iterate_point也會增加一倍。不是雙倍*。 – redimp