Python中调用c语言

Python中有时需要调用c程序中的函数。使用ctype库可以很方便地调用c语言。现说明方法,以及注意事项。

c程序编译为.so文件:

我们需要的c语言文件为test.c,要从其中调用func(x,y)函数。

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

导入该文件

随后,我们在python中导入该test.so文件,方法如下:

import os
from ctypes import *

p = os.getcwd() + '/test.so' # 文件路径
f = CDLL(p) # 用CDLL方法读取该.so文件。

调用函数

这时我们已经读导入了该文件,可以使用文件中的函数了。
现在分情况讨论,如果func中传入的参数均为整数,那么比较简单:

a = 3
b = 4
f.func(a, b)

如果传入的参数为浮点数,那么得提前声明一下变量:

c = c_float(5.5)
d = c_float(6.66)
f.func(c, d)

如此,便可以正确调用。

原文地址:https://www.cnblogs.com/guiguiguoguo/p/11431578.html

时间: 2024-07-31 21:19:22

Python中调用c语言的相关文章

在python中扩展c语言模块

有一个以前写的c语言代码,我想把它用在python程序中.我先是看了<python基础教程>一书中的方法,书中说可以用swig加python内置distutils模块的方法来实现.我照着书上的步骤试了试,结果在导入模块的时候总是提示"ImportError: dynamic module does not define init function (initprintf)".起初我以为是so文件没有放对位置.但是我试着在目录中建立了一个简单的python模块,然后再导入,发

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana

使用ctypes在Python中调用C++动态库

使用ctypes在Python中调用C++动态库 入门操作 使用ctypes库可以直接调用C语言编写的动态库,而如果是调用C++编写的动态库,需要使用extern关键字对动态库的函数进行声明: #include <iostream> using namespace std; extern "C" { void greet() { cout << "hello python" << endl; } } 将上述的C++程序编译成动态链

[Python-MATLAB] 在Python中调用MATLAB的API

可以参考官方的说明文档: http://cn.mathworks.com/help/matlab/matlab_external/get-started-with-matlab-engine-for-python.html MATLAB Engine API的使用文档: http://cn.mathworks.com/help/matlab/matlab-engine-for-python.html 原材料: 1.MATLAB 2015a  32位的 2.Python 2.7.13    32位

python下调用c语言代码

1)首先,创建一个.c文件,其大体内容如下: 2 #include <Python.h> 99 char * extract(char * path)                                                   //想要调用的函数100 {112     char * Q = (char * )malloc(3*sizeof(char));           . . .149     return Q;150 }151 152 153 PyObject

Python脚本传参和Python中调用mysqldump

Python脚本传参和Python中调用mysqldump<pre name="code" class="python">#coding=utf-8 import MySQLdb import sys import os # 李红颖编写,用户湖南CLV数据分割使用 print 'dump database:',sys.argv[1] ##传入的第一个参数,数据库名称 print 'dump table:',sys.argv[2] ##传入的第二个参数,表

SDRAM和重定位(二)---开始在汇编代码中调用 C 语言

前面的点亮led的代码由于比较简单,所以全部用汇编代码完成,但是随着代码越来越多,逻辑关系越来越复杂,想要完全用汇编代码来写程序不太现实,必须要借助 c 语言程序,那么就会有从汇编语言到 c 语言的一个过渡阶段. ======================================================= 如何在汇编语言中调用 c 语言? 在汇编中调用 c语言程序的方法很简单,只需利用汇编代码:bl xxx(函数名)即可,但是重点不是如何调用 c 程序,而是汇编代码要为运行 c

在Windows Phone项目中调用C语言DLL

在Windows Phone项目中调用C语言写的DLL 最近接到一个需求,需要在WP里调用一个C语言写的DLL,并且说Android和iOS都可以,问我WP是否可以这样? 我说我调研一下,就有了下面的文章. 在传统C# WinForm 里调用Win32 DLL都不容易(可能用惯了C#),要用P/Invoke,然后DllImport什么什么,那WP里不是更麻烦? 先看看网上有没有可用的文章,结果还真找到devdiv中的文章,但其中有两处错误,所以我fix bug并且整理一下,然后展示给大家. 1.

python 中调用windows系统api操作剪贴版

# -*- coding: utf-8 -*- ''' Created on 2013-11-26 @author: Chengshaoling ''' import win32clipboard as w32 import win32con class OperateClipboard(object): def __init__(self): # print "OperateClipboard" pass def getText(self): w32.OpenClipboard()