请问python中如何传递一个字符串给c程序dll中c函数,同时c函数如何返回一个字符串给python

请问python中如何传递一个字符串给c程序dll中c函数,同时c函数如何返回一个字符串给python,第1张

用ctypes,

>>> from ctypes import

>>> libc=cdllmsvcrt

>>> libcprintf("hello %s\n","world")

hello world

12

>>>

>>> p = create_string_buffer("Hello", 30)

>>> n=libcsprintf(p,"hello %s\n","world")

>>> n

12

>>> print p

<ctypesc_char_Array_30 object at 0x02247C10>

>>> dir(p)

['__class__', '__ctypes_from_outparam__', '__delattr__', '__delitem__', '__delsl

ice__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__',

'__getslice__', '__hash__', '__init__', '__len__', '__module__', '__new__', '__r

educe__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setslice

__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',

'_b_base_', '_b_needsfree_', '_length_', '_objects', '_type_', 'raw', 'value']

>>> pvalue

'hello world\n'

>>>

直接使用不要考虑了。

通常是通过cython,或者是ext扩展时使用。

还没有遇到复杂到,直接使用C头文件的时候。真到了这个时候,python的优势不在。

不如在C语言里集成python。这样只需要在C语言里引入pythonh。相对简单得多。

用c语言编写一个动态库,提供两个函数,两个数的整形求和,两个浮点数的求和。取名为mylibc。

将c函数文件编译成so动态库。运行gcc mylibc -fPIC -shared -o libtestso命令,在目录下可以看到生成的库文件libtestso。

Python调用so库文件。首先导入ctypes,其次用CDLL加载so文件,最后调用对应的函数。将python代码保存到pydemopy中。

执行python pydemopy查看运行结果。

众多python培训视频,尽在python学习网,欢迎在线学习!

以上就是关于请问python中如何传递一个字符串给c程序dll中c函数,同时c函数如何返回一个字符串给python全部的内容,包括:请问python中如何传递一个字符串给c程序dll中c函数,同时c函数如何返回一个字符串给python、如何在python中使用C的头文件、python怎样嵌入c等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9492530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存