栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Cython中将函数指针传递给外部程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Cython中将函数指针传递给外部程序

我想你是知道
这个

是否可以从C调用我的Python代码?

答:是的,很容易。请遵循Cython来源分发中的Demos / callback /中的示例

因此,知道您可以卸载主要功能,让我们采取另一种方法。我写了几个愚蠢的函数来测试这一点:

#include <stdio.h>void fn1(void) {        puts("Called function 1");}void fn2(void) {        puts("Called function 2");}

然后,执行回调的函数

typedef void (*callback)();void mainfunction(void *F) {        ((callback)F)();}

可以直接从Python传递:

>>> from ctypes import cdll>>> lib = cdll.LoadLibrary('./lib.so')>>> main = cdll.LoadLibrary('./main.so')>>> main.mainfunction(lib.fn1)Called function 1>>> main.mainfunction(lib.fn2)Called function 2

现在,让我们包装一个Python函数:

>>> from ctypes import CFUNCTYPE>>> def pyfn():...     print "Called the Python function"... >>> CWRAPPER = CFUNCTYPE(None)>>> wrapped_py_func = CWRAPPER(pyfn)>>> main.mainfunction(wrapped_py_func)Called the Python function


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404576.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号