正如我還是新來這個,我面臨的一些問題,這是我的C++代碼:蟒蛇與C++使用ctypes的
#include <python.h>
#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT PyObject *Add(PyObject *pSelf, PyObject *pArgs)
{
int s,d;
if(!PyArg_ParseTuple(pArgs, "ii" , &s, &d))
{
PyErr_SetString(PyExc_TypeError,
"Add() invalid parameter");
return NULL;
}
return Py_BuildValue("i", s + d);
}
而Python代碼:
import ctypes
MyDll = ctypes.cdll.LoadLibrary(r"PyToCppTest.dll")
jj = MyDll.Add(1,2)
我得到一個錯誤,當我運行上面Python代碼:
OSError: exception: access violation reading 0x000000000000000A
我想通過數據,而不將其轉換,從Python來C++,然後將其轉換裏面C++。
哇,你真棒:d 它的工作就像一個魅力:) 只是需要更多的解釋:爲何要移除*,因爲我已經看到它在所有在線功能 ,不明白MyCFunc部分(pSelf「添加「,MyDll) – 2013-02-28 03:27:01
@MohamedSakrAboYoucuf:因爲'Add'實際上並不是一個類實例的成員,而是一個靜態函數。 'self'只能由解釋器自動傳遞,作爲* methods *的第一個參數,而不是* functions *。 – netcoder 2013-02-28 14:00:32
最後一件事,有沒有辦法提取C++內的對象方法? – 2013-02-28 15:22:30