`
lingshangwen
  • 浏览: 61156 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python调用C语言函数

阅读更多

使用Python的ctypes,我们可以直接调用由C直接编译出来的函数。其实就是调用动态链接库中的函数。为什么我们需要这样做呢,因为有些时候,我们可能需要一个性能上比较讲究的算法,有些时候,我们可以在Python中使用已经有了的现成的被封闭在动态链接库中的函数。下面是如何调用的示例。

首先,我们用一个乘法来表示一个算法功能。下面是C的程序:
int multiply(int num1, int num2)
{
    return num1 * num2;
}


如果在Windows下,你可能需要写成下面这个样子:
#include <windows.h>
BOOL APIENTRY
DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}

__declspec(dllexport) int
multiply(int num1, int num2)
{
    return num1 * num2;
}

然后,自然是把这个C文件编成动态链接库:

Linux下的编译:
gcc -c -fPIC libtest.c
gcc -shared libtest.o -o libtest.so

Windows下的编译:
cl -LD libtest.c -libtest.dll

于是在我们的Python中可以这样使用:
(其中的libtest.so在Windows下改成libtest.dll即可)
>>> from ctypes import *
>>> import os
>>> libtest = cdll.LoadLibrary(os.getcwd() + '/libtest.so')
>>> print libtest.multiply(2, 2)


注意:上面的Python脚本中需要把动态链接库放到当前目录中。

                                                                 本文转载自:http://cocre.com/?p=671

分享到:
评论

相关推荐

    python 调用c语言函数的方法

    本篇文章主要介绍了python 调用c语言函数的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    python 调用c语言函数的实例讲解

    下面小编就为大家带来一篇python 调用c语言函数的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Python实现的调用C语言函数功能简单实例

    主要介绍了Python实现的调用C语言函数功能,结合简单实例形式分析了Python使用ctypes模块调用C语言函数的具体步骤与相关操作技巧,需要的朋友可以参考下

    Python调用C语言的方法【基于ctypes模块】

    本文实例讲述了Python调用C语言的方法。分享给大家供大家参考,具体如下: Python中的ctypes模块可能是Python调用C方法中最简单的一种。ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不...

    Python调用C语言程序方法解析

    首先我们需要将编写好的c程序文件编译为动态库文件(后缀...然后就可以调用其中的函数了。 a.函数名() 具体使用示例如下: //c语言代码 #include void fun() { printf("hello world\n"); } #python代码 from ctypes

    python通过ctypes调用c,python向c函数通过结构体传递python回调函数指针,c回调python

    python通过ctypes调用c语言库函数;python向c函数传递二维数组,一维数组,指针灯参数;python向c函数传递结构体指针,c函数向python返回结构体指针;python向c以参数形式传递回调函数,且c函数回调python回调函数;...

    使用Python向C语言的链接库传递数组、结构体、指针类型的数据

    由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库。 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章...

    python调用C的例子

    在python中调用C语言编写的函数的一个简单例子

    python调用go或c语言.pdf

    Python是一个生产力很高的语言,能够以最高的效率完成最多的事,但是Python的性能,是我们一直诟病的一个问题,尤其是一个大锁GIL。...​ python的ctypes模块提供了和C语言兼容的数据类型和函数来加载so/dll动态链接

    Windows下生成函数关系调用图

    免费软件,可自动分析C/C++/Java/Python/C#/Objective-C等项目的源代码并生成函数调用关系图,支持源代码定位,可快速查找调用链

    C语言调用Python代码的方法

    你想在C中安全的执行某个Python调用并返回结果给C。 例如,你想在C语言中使用某个Python函数作为一个回调。 解决方案 在C语言中调用Python非常简单,不过涉及到一些小窍门。 下面的C代码告诉你怎样安全的调用: #...

    Python调用C语言的实现

    Python中的ctypes模块可能是Python调用C方法中最简单的一种。ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改。也正是如此奠定了这种方法的简单性。 示例如下 ...

    C语言调用python凸优化的函数

    用C语言调用python凸优化的函数的一个小程序

    ctypes库的使用 python调用Windows DLL

    ctypes库的使用 python调用Windows DLL ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数。

    c语言调用python脚本

    在C语言中调用Python脚本可以通过以下步骤进行: 安装Python解释器:首先需要确保系统中安装了Python解释器,可以从Python官方网站下载并安装。 编写Python脚本:创建一个包含所需功能的Python脚本文件。例如,...

    基于Python实现一个C语言的编译器【100010711】

    使用高级程序语言作为实现语言,实现一个类 C 语言的编译器。编码实现编译器的组成部分。 要求的类 C 编译器是个一遍的编译程序,词法分析程序作为子程序,需要的时候被语法分析程序...实现过程、函数调用的代码编译

    c调用python调试方法

    C语言可以调用python,C如何调用python呢?调用后如何调试呢?小编与大家分享操作经验。 (一)C语言调用python 首先,C语言中调用python,要使用头文件Python.h。 2、接着,定义一个调用python的函数。 3、函数...

    linux中使用boost.python调用c++动态库的方法

    前言 最近开始使用 robot framework 测试c++的动态库,...在上网查资料和咨询同事之后,得到两种办法:第一种将C++动态库封装成C接口,让python调用C语言接口。由于python只能调用C接口,无法直接调用C++接口,所以需要

Global site tag (gtag.js) - Google Analytics