用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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)