Python如何调用C语言程序?


这里介绍一种简单的方式—编译为dll或so动态库,然后再使用ctypes模块调用就行,下面我简单介绍一下实现过程,主要内容如下:

编译为dll

这种方式主要应用在Windows平台下,将C语言程序编译为一个dll动态库,然后直接使用ctypes模块加载使用就行,测试过程如下:

1.为了更好的说明问题,这里我利用VS2017编译了一个dll文件,源C代码如下,非常简单,一个相乘函数:

2.编译完成后,我们在同级目录下新建一个py文件,直接使用ctpyes模块加载刚才编译好的dll文件就行,如下,非常简单:

点击运行这个程序,已经成功调用C函数,并返回执行的结果,如下:

编译为so

这种方式主要应用在Linux环境下,基本过程和Windows平台下差不多,也是先编译为so动态库文件,然后再使用ctypes模块加载使用就行,测试过程如下:

1.测试C程序如下,两个简单的函数,一个相加一个相乘,接着使用gcc命令将这个C文件编译为so文件,编译命令“gcc -shared -Wl,-soname,test -o test.so -fPIC test.c”:

2.编译完成后,在同级目录下也新建一个py文件,也直接使用ctypes模块加载so文件使用就行,代码几乎不变,如下:

直接运行这个程序,效果如下,已经成功调用C函数:

至此,我们完成了利用Python调用C语言程序。总的来说,整个过程非常简单,只要你熟悉一下上面的步骤,很快就能掌握的,网上也有相关教程和资料可供参考,非常详细也非常丰富,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。


小小猿爱嘻嘻


我本人没做过完整的,但是在项目中见到过调用。cpp程序写好后,必然有一个main函数在,或者你就写一个main.cc,把main函数放在这个文件里。编译好后,把编译后的程序放在Python程序根目录的某个文件夹内(其实随便放哪儿,不过为了方便),然后在Python文件中就可以直接导入项目名,也就是c程序的名字,然后就能用了,不过这是直接从main函数入口调用,如何调用其他的函数,这个我没用过,不过应该大同小异吧。


new-小组会


如果调用 shell

通过exec dos当式,或者 shell 或者中断都可以的

都可以的。

也可以编译成 动态库 或者so.


分享到:


相關文章: