On 2018-02-21 02:28, 赵亚 wrote:

This "python-dev" list is for development of the Python language itself. I think that this message should instead have been sent to "python-list".

i have question:call,c-->python-->c.
1.the c pointer void* abc="123" by pycapsule in the c code.
......
void* lpContext = "abc";
PyObject * lpPyContext = PyCapsule_New(lpContext, "Context",NULL);
......

Is this C code calling the function 'test' in the Python code?

If yes, are you sure that lpPyContext should be in pArgs at index 1 and not at index 0?

The function 'test' expects argument 0 => lpContext, argument 1 => lpRequest, argument 2 => lpAnswer.

PyTuple_SetItem(pArgs, 1, lpPyContext);
PyObject* pyResult = PyObject_CallObject(pFunc, pArgs);

2.c call python:

in the python code:
import ctypes
pycapsule = ctypes.windll.LoadLibrary("C:\Users\zhaoya16975\Documents\Visual Studio 
2017\Projects\cpython\Release\pycapsule.dll")
def test( lpContext,lpRequest,lpAnswer):
     print lpContext
     pycapsule.hello()
     pycapsule.GetContext(lpContext)
.........
the lpContest is "<capsule object "Context" at 0x02747e00>"
but,i can't lpContext in the pycapsule.GetContest:
the capsule is null poniter,the GetContext no execute!!

void* FUNCTION_CALL_MODE GetContext(PyObject  *capsule) {
                printf(" GetContext......\n");
                //if (!PyCapsule_IsValid((PyObject *)capsule, "Context")) {
                //      printf(" the Capsule Context is no Valid\n");
                //      return NULL;
                //}
                //return PyCapsule_GetPointer((PyObject *)capsule, "Context");
                return NULL;
                
        }

FUNCTION_CALL_MODE is __stdcall i think no problem.because, if GetContext(PyObject 
 *capsule) -->GetContext() is ok. PyObject  *capsule from python to c unknown 
error occurred.

i hope c call python  pass void* ,and python call c pass void* ,but the capsule 
call no success?

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to