我可以使用ctypes从C中嵌入的python中回调C函数吗?
作者:互联网
我有一个嵌入了python代码的C程序.我从源代码编译了python 2.7.2,并将我的程序与libpython2.7.a相关联.
现在在我的python代码中,我希望调用链接到我的C程序的其他C库中的函数.我可以编写一个python扩展(参见this document中的扩展嵌入式Python).但是,ctypes会使这更容易,并允许我使用一些未加密的现有代码.
ctypes面向加载共享库,我想知道是否有办法将其“指向”我的静态程序代码.
我无法将相关代码编译到共享库中,因为我的目标是iOS,Apple禁止AFAIK共享库.
解决方法:
从Python代码中,您可以为静态函数创建ctypes包装器,如下所示:
restype = ctypes.c_int
argtypes = [ctypes.c_int, ctypes.c_double] # or whatever
functype = ctypes.CFUNCTYPE(restype, *argtypes)
wrapper = functype(address_of_static_function_as_an_int)
您当然可以从C代码中调用此(或类似)代码.
标签:python,python-2-7,ctypes,python-extensions 来源: https://codeday.me/bug/20190704/1375542.html