c代码如下:
extern "C"
int DllTestCB(int (*callback)(char *), char* str)
{
if (callback != NULL)
{
int cnt = 1;
while (cnt--)
{
callback(str);
Sleep(1000);
}
}

return 0;
}
python代码如下:
#!/usr/bin/env python
#coding=utf-8

from ctypes import *

def callback(abc):
print 'callback by c++ in python... %s' % abc
return 0
libtest = cdll.dll_py
CMPFUNC = CFUNCTYPE(c_int, c_char_p)
_callback = CMPFUNC(callback)
testcb = libtest.DllTestCB
testcb.restype = None
testcb(_callback, 'a sample++')
运行后,结果如下:
callback by c++ in python... a sample++
extern "C"
int DllTestCB(int (*callback)(char *), char* str)
{
if (callback != NULL)
{
int cnt = 1;
while (cnt--)
{
callback(str);
Sleep(1000);
}
}
return 0;
}python代码如下:
#!/usr/bin/env python
#coding=utf-8
from ctypes import *
def callback(abc):
print 'callback by c++ in python... %s' % abc
return 0
libtest = cdll.dll_py
CMPFUNC = CFUNCTYPE(c_int, c_char_p)
_callback = CMPFUNC(callback)
testcb = libtest.DllTestCB
testcb.restype = None
testcb(_callback, 'a sample++')运行后,结果如下:
callback by c++ in python... a sample++
本文介绍了一个C语言编写的DllTestCB函数,该函数接受一个回调函数作为参数,并在Python中通过ctypes库实现了对该函数的调用。Python中的回调函数能够被C代码调用,并展示了具体的实现细节及运行结果。

3726

被折叠的 条评论
为什么被折叠?



