文档章节

python3中调用C语言的函数

独钓渔
 独钓渔
发布于 2015/11/17 10:39
字数 204
阅读 482
收藏 6
点赞 0
评论 0

一, 先用C语言写好一个函数库

#include<stdio.h>
int add(int num1, int num2)
{
	return num1 + num2;
}

int sub(int num1, int num2)
{
	return num1 - num2;
}

int mul(int num1, int num2)
{
	return num1 * num2;
}

int div(int num1, int num2)
{
	return num1 / num2;
}


二, 然后使用gcc编译成静态库

gcc -c -fPIC math.c
gcc -shared math.o -o math.so

三, 使用python的ctypes库导入该静态库

#!/opt/python3/bin/python3
#
from ctypes import *
import os

print("begin ......")
libmathpath = os.path.join(os.getcwd(),"math.so")
print(libmathpath)
libmath = CDLL(libmathpath)
print("-----------------")
print(" ADD: 21 89")
print(libmath.add(21,89))
print("-----------------")
print(" SUB: 124 89")
print(libmath.sub(123,89))
print("-----------------")
print(" MUL: 12 77")
print(libmath.mul(12,77))
print("-----------------")
print(" DIV: 183 3")
print(libmath.div(183,3))
print("-----------------")


4, 执行结果如下:

begin ......
/home/git/math.so
-----------------
 ADD: 21 89
110
-----------------
 SUB: 124 89
34
-----------------
 MUL: 12 77
924
-----------------
 DIV: 183 3
61
-----------------


如图1(math.c源码)

如图2(testmath.py)源码

 

如图3(执行结查)

 

© 著作权归作者所有

共有 人打赏支持
独钓渔
粉丝 47
博文 373
码字总数 142587
作品 0
沙坪坝
系统管理员
C/C++ 和 Python混合编程

链接:https://www.zhihu.com/question/23003213/answer/56121859 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 #include int main(int argc, char *...

sirius_0 ⋅ 04/21 ⋅ 0

用 Python 编写的 Python 解释器

(点击上方公众号,可快速关注) 翻译: qingyunha 英文:Allison Kaptur http://qingyunha.github.io/taotao/ Allison是Dropbox的工程师,在那里她维护着世界上最大的由Python客户组成的网络...

Python开发者 ⋅ 04/22 ⋅ 0

12道必会的Python面试题,附详细讲解

无论是应聘Python方向的web开发,还是爬虫工程师,或是数据分析,还是自动化运维,都涉及到一些基础的知识!小编挑了一些Python的基础面试题,看看你能不能的答上来,也许面试的同学用的着!...

诸葛玥 ⋅ 06/16 ⋅ 0

Python3的基本知识点(一)

Python的基础知识 1.Python的第一个程序 对于Python程序的编写有很多种方法,一般常见的编写程序有3种方式 1、利用超级终端编写: 打开超级终端:如图1所示, 2、利用sublime进行编写Python的...

长风留言 ⋅ 05/28 ⋅ 0

为什么python突然变得这么火了?

可能会有一种感觉python突然之间变得这么火热了,个人感觉还是雷声大雨点小,真正用pytho落地的东西还是少,不可否认的python前途无量,现在人工智能的调用框架选择了python。所以目前阶段选...

Python燕大侠 ⋅ 05/10 ⋅ 0

Python3基础知识点的讲解(四)

绪论 本篇文章既上篇文章之后为大家带来的是关于Python3中一些基础的知识点,通过上篇的学习,我们队Python3中的一些基本的语法有所了解和掌握。 主要内容的介绍 字典的介绍 字典的运用 元组...

长风留言 ⋅ 06/08 ⋅ 0

Python函数中参数及变量的引用原理

最近在刷题的时候碰到个奇怪的问题。例子大概是这样似的: 为什么直接用print可以输出a,但是调用a的话就报错说变量a未分配?这是Python语言的特性,不同于C语言的是Python函数中的变量(在定...

辣鸡大学生代表 ⋅ 06/04 ⋅ 0

Python函数式编程中map()、reduce()和filter()函数的用法

Python中、和三个函数均是应用于序列的内置函数,分别对序列进行遍历、递归计算以及过滤操作。这三个内置函数在实际使用过程中常常和联合使用,我们首先介绍下lambda函数。1、lambda函数 la...

损失函数 ⋅ 05/24 ⋅ 0

解释一下,函数式方程,要不你进来看下?

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序...

胶水语言 ⋅ 05/10 ⋅ 0

人人都能学会的python编程教程1:第一行代码

前言 众所周知,现在IT行业很火,行业薪酬也很高,国家在2017年也发布了人工智能教育的推广计划,人人会编程的时代将要到来。不会编程、不懂编程可能有些跟不上时代的节奏,普通人不懂技术也...

编程老司机 ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 29分钟前 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 34分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 37分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 47分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部