在python中调用并使用c语言

在python中调用并使用c语言三个步骤 1 编写好 c 语言程序 2 将 c 程序编译成 so 文件 3 编写 python 使用 python 运行写个很简单的 demo 第一步 写一个 c 语言文件实现两数字相加 文件名字叫 add c include lt stdio h gt intadd int int int floatadd float float float intadd int intnum1 intn

三个步骤:

1、编写好c语言程序

2、将c程序编译成.so文件

3、编写python,使用python运行

写个很简单的demo:

第一步,写一个c语言文件实现两数字相加,文件名字叫add.c:

#include 
  
    int add_int(int, int); float add_float(float, float); int add_int(int num1, int num2){ return num1 + num2; } float add_float(float num1, float num2){ return num1 + num2; } 
  

第二步,打开cmd,cd路径到add.c所在目录下方,然后输入:

gcc --shared -fpic -o add.so add.c

每个平台将c文件编译成so文件的命令都不同,我这个是windows下的命令。其它的例如Linux等OS命令请自行查询命令资料。

例如我的:

在python中调用并使用c语言

然后我们就能看到目录下生成了一个add.so文件

第三步,将so文件放到pycharm的python代码的目录下,并编写python代码 :

#coding utf-8 from ctypes import * #-----方法1------ #加载编译好的so文件 adder = CDLL('./add.so') #调用c文件的函数adder.add_int(),实现int类型数据相加 res_int = adder.add_int(4,5) print ("Sum of 4 and 5 = " + str(res_int)) #----方法2---- #在python中定义c语言能识别的数据类型 a = c_float(5.5) b = c_float(4.1) #定义函数并且调用,实现相加 add_float = adder.add_float add_float.restype = c_float print("Sum of 5.5 and 4.1 = ", str(add_float(a, b)))

输出:

在python中调用并使用c语言

参考资料:python调用c、ctype官方文档、

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/173797.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月27日 上午7:58
下一篇 2026年3月27日 上午7:58


相关推荐

  • nick nack_coughing翻译

    nick nack_coughing翻译webrtc中fec的处理机制:获取一帧数据,拆分成多个rtp包,再封装成fec包(fec只有primayblock),发送到网络;之后根据rtp包生成相应数量的fec包(根据冗余度来生成对应数量的包),再发送到网络。需要注意的是:rtpred包和fecred包都是序号连续的。所以判断一个完整帧的依据依然可以使用:获取到首包,获取到尾包,中间包连续。但因为fec的加入,导致所有原始数据的rtp包无法连续(和纯nack不会这样)。所以针对带有fec包的丢包处理机制是这样的:如果一个完整帧里面丢了原始

    2022年8月11日
    6
  • MongoDB和Redis的区别是什么

    MongoDB和Redis的区别是什么

    2022年2月20日
    53
  • iOS加载WebP

    iOS加载WebP遇到场景 首先直播需要展示礼物 会动的礼物 解决 按之前的考虑是加载 gif 但是 gif 会产生锯齿导致礼物不好看 最后我们想到了 webp 我们将 UI 设计好的 png 几个帧数合成了 webp 格式 加载 webp 我使用的是 YYWebImage 首先加载执行 pod YYWebImage amp amp gt 1 0 5 跟着执行 pod YYImage Web

    2026年3月18日
    1
  • redis集群搭建(非常详细,适合新手)_redis哨兵模式两主多从

    redis集群搭建(非常详细,适合新手)_redis哨兵模式两主多从前言由于项目需要,搭建了一个Redis服务器集群,实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,下面就详细讲解一下如何利用Redis来实现。文章重点1、Redis入门简介2、Redis安装部署3、Redis集群整体架构4、Redis主从配置及数据同步5、Redis哨兵模式搭建一、Redis入门简介Redis(RemoteDictiona…

    2026年4月15日
    5
  • 用启动易合并启动光盘图解教程

    用启动易合并启动光盘图解教程用启动易合并启动光盘图解教程发布时间:2007-04-26来源:矽谷漂移工作组嘿嘿绿盟不提供注册码,我来提供,用户:xdowns.com注册码:2566-11AC-0624-22BCultraiso,激活成功教程版下载地址:[url]http://www.xdowns.com/soft/4/124/2006/So…

    2022年7月14日
    21
  • 手把手教你搭建Android开发环境

    手把手教你搭建Android开发环境搭建开发环境,是学习一门技术的开始。参照网上的教程,整理了一下。进行Android开发应用开发时,首先需要有JDK和AndroidSDK的支持,还需要开发工具。在AndriodStudio2.2开始,安装AndroidStudio时,会自动安装JDK和AndroidSDK。下载网址:https://developer.android.google.cn/studio/一、进入网址,点击下载安卓工作室(原英文版,翻译后的界面了)二、点击下载后,出现协议界面,勾选同意,下载。三、双击刚

    2022年7月23日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号