用C语言写Python扩展 Windows

c写python库_使用C/C++编写Python扩展库 本文描述在Windows系统下(Linux下也一样,官方文档本来就没有区分系统)使用C/C++编写Python3扩展库的方法,Python Extending 的官方文档在这里(Extending and Embedding the Python Interpreter)。下面主要讲原理,有描述不清楚的请参考官方文档。1.Python扩展库的本质Python扩展库的文件后缀名为pyd,实际就是一个... 阅读详情

Python在各个方面的开发都有涉及,但也不是所有需求都能满足,例如对于 安全性、性能等要求比较高的场景下就不适用了。

但可以通过C语言写Python扩展的方式,来扩展现有的Python功能,现在将以前写Python扩展的步骤记录下来以免忘记

 


#include "Python.h"

/*
定义一个包装函数 实现执行shell命令的功能
*/
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
    const char *command;
    int sts;

    if (!PyArg_ParseTuple(args, "s", &command))
        return NULL;
    sts = system(command);
    return PyLong_FromLong(sts);
}

/*
定义导出到Python中的方法列表
*/
static PyMethodDef spamMethods[] =
{
	{ "system",spam_system, METH_VARARGS, "system(cmd)" },
	{ NULL, NULL, 0, NULL }
};

/*
定义导出到Python的模块
*/
static struct PyModuleDef spammodule = {
	PyModuleDef_HEAD_INIT,
	"spam",   /* name of module */
	"test python C", /* module documentation, may be NULL */
	-1,       /* size of per-interpreter state of the module,
			  or -1 if the module keeps state in global variables. */
	spamMethods
};

PyMODINIT_FUNC PyInit_spam(void)
{
	return PyModule_Create(&spammodule);
}

windows下我用的vs IDE,其它IDE配置项是一样的,区别只在于位置不同而已。

指定编译 连接的 Python头文件、库文件路径

指定 Python静态库路径

编译后得到dll文件,将dll文件重命名扩展名为*.pyd,放到Python的库目录 site-packages下,运行Python解释器

import 模块名调用即可

 

 

 

用C语音编写python的扩展模块,也就是python调c库 NULL 博文链接:https://8366.iteye.com/blog/1575189 立即下载

相关推荐

用python重写了C语言经典100例 - 源码

用python重写了C语言经典100例 ---- 源码内有例子说明

如何用C/C++语言写Python的库或者模块?

C/C++是Python解释器的底层实现语言之一,因此可以使用C/C++编写Python的扩展库或模块。Python提供了一系列API接口,使得我们可以在C/C++中调用Python解释器和相关的数据结构。需要注意的是,编写C/C++扩展模块需要对Python解释器和相关的数据结构有比较深入的了解,同时需要了解扩展模块的语法和API。编写C/C++函数,并将其编译为一个动态链接库,如dll或so文件。调用导入的函数即可完成操作,返回的结果可以直接在Python中使用。

程序猿视角 2953

如何用C代码给Python写扩展库(Cython)

之前一篇文章里提到了利用Cython来编译Python,这次来讲一下如何用Cython给Python写扩展库。 两种语言混合编程,其中最重要的是类型的传递。 我们用一个简单的例子进行入门:这次的目标是用C语言写一个Numpy的加法和元素相乘模块。在本例中,Numpy的array被传入到C语言模块内,变成了二维数组。 1. 头文件main.h: #ifndef _MAIN_H #define _MAIN_H void plus(double *a, double *b, double *r, int n, int m); // 矩阵加法 void mul(double *a, double *

C++开发实战(五):用C/C++给python写一个模块

一、前言 1、上一篇文章,我们已经对C/C++工程进行了二次封装,并生成了可用的python模块 2、本篇文章将基于上一篇文章的思路,自己写一个python模块 C++开发实战(四):对提供接口的C/C++进行二次开发_Lion King的博客-优快云博客_c++二次开发https://blog.youkuaiyun.com/weixin_43431593/article/details/121615034?spm=1001.2014.3001.5501 二、写一个简单的python模块 1、创建工程(动态

weixin_43431593的博客 3443

开发基于GDL235KBQ6开发板的IAP升级程序(HEX协议+串口空闲中断 + DMA接收数据)

使用GDL235kB开发板,实现串口iap升级程序的bootloader代码编写,app为led灯闪烁,并完成通信c代码

zhaozijuncc的博客 642

超详细 | 贝叶斯网络基础——有图有真相

Hello,大家好,我是starz。这是本系列的第二篇《概率基础Ⅱ》,虽说是概率基础,但作为过渡,它开始以图为载体 这节的主要内容有: 贝叶斯网络 三种结构 D-划分 贝叶斯球 马尔科夫毯 应用例子 总结 让我们开始吧 :3 贝叶斯网络 概率图模型可笼统分为两类,一是基于无向图的马尔科夫网络: 二是基于有向图的贝叶斯...

qq_41603411的博客 2万+

使用 C 或 C++ 开发 Python库(01)

如果您知道如何使用 C 编程,那么向 Python 中添加新的内置模块非常容易。此类扩展模块可以完成两件无法在 Python 中直接完成的事情:它们可以实现新的内置对象类型,并且它们可以调用 C 库函数和系统调用。

gongdiwudu的专栏 2515

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4720

python写界面c这算法_一步步来用C语言来写python扩展

本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp, gcc.exe 4.7.2, Python 3.2.3。第一步 撰写C语言的DLL创建一个 clip.c 文件,内容如下:// 设置 UNICODE 库,这样的话才可以正确复制宽字符集#d...

weixin_39634576的博客 252

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 327

从轴承润滑到代码实现:手把手教你用Python FDM求解稳态雷诺方程

本文详细介绍了如何用Python FDM(有限差分法)求解稳态雷诺方程,从轴承润滑理论到代码实现的全过程。通过构建无量纲方程、有限差分格式和迭代求解算法,开发者可以快速实现专业级润滑分析,应用于涡轮发电机、汽车曲轴等场景。文章还提供了完整的Python代码示例和结果可视化方法,帮助工程师优化轴承设计。

weixin_28689507的博客 119

python是c语言写的_python使用C语言写扩展示例

对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp,gcc.exe 4.7.2,Python 3.2.3。第一步 撰写C语言的DLL创建一个 ...

weixin_39683144的博客 174

星光、黑光、全彩夜视摄像头技术解析与实战选型指南

本文深入解析了星光、黑光、全彩与红外等主流夜视摄像头技术的工作原理与核心差异。针对不同监控场景与预算,提供了实战选型指南,帮助用户在安防项目中做出明智决策,实现夜间监控效果最大化。

weixin_29179311的博客 346

在Mingw中Build Python Extensions

Python如此可爱,以致于人们想用各种方法去玩它。其中一个玩法就是用C语言为Python写各种扩展,不仅性能更好,而且酷毙了- 老爷爷级的C为Python写扩展难道不酷吗?不过Python Windows版本的缺省C编译器是Visual C++,这就让崇尚自由的我们不免郁闷了。 不过俗话说:“渴望自由的人,总是能得到GNU的救赎”,这不,MINGW-GNU C编译器在Windows下的移植就

xuanyun的专栏 1226

电商行业分析爬虫:抓取行业数据,进行行业分析

电商行业数据分析对于市场研究、竞争分析和商业决策至关重要。通过爬取电商平台的数据,我们可以深入了解市场动态、消费者行为和商品销售情况。本文将介绍如何构建一个电商行业分析爬虫,抓取商品信息、销售数据和用户评价等,并进行数据分析。

u014481728的博客 1628

cartographer如何使用2个反光柱子作为一个landmark

2个反光柱的摆放要求:靠着墙摆,因为我们只能从一侧看到2个反光柱,从两侧都看到至少需要3个反光柱来定位。 landmark检测原理:因为我们是从一侧看到2个反光柱,所以看到2个反光柱在一帧激光数据中会有顺序,有2种情形,如下图 这两种情形,我们发现 情形1: 这种情形2个反光柱子被检测到的激光角度小于180,我们认为大一些激光角度的是原点。 情形2: 这种情形2个反光柱子被检测到的激光角度大于180,我们认为小一些激光角度的是原点。 这样原点就固定下来,并是唯一的。2个反光柱构成的坐标系也就确定了。和激光坐

南北粉面馆 3827

python类库是c语言写的_python使用C语言写扩展示例

这篇文章主要为大家详细介绍了python使用C语言写扩展示例,具有一定的参考价值,可以用来参考一下。对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp, g...

weixin_35433920的博客 241

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python是c语言写的_一步步来用C语言来写python扩展

本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp, gcc.exe 4.7.2, Python 3.2.3。第一步 撰写C语言的DLL创建一个 clip.c 文件,内容如下:// 设置 UNICODE 库,这样的话才可以正确复制宽字符集#d...

weixin_42513928的博客 320

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何用c语言写python库_一步步来用C语言来写python扩展

本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp, gcc.exe 4.7.2, Python 3.2.3。第一步 撰写C语言的DLL创建一个 clip.c 文件,内容如下:// 设置 UNICODE 库,这样的话才可以正确复制宽字符集#d...

weixin_39966765的博客 418

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python3 C扩展

最近在看Python核心编程,感觉真的是简洁而强大,而且支持各种语言的扩展。网上找到的C扩展例子差不多都是在Mac或者Linux下的,下面整理下Python3.x在windows vs2012的C扩展吧。希望可以帮助到其他人~ 1、VS环境配置 需要在cmd上执行一些命令,所以要配置一下VS的运行环境(测试下环境是否可用:在cmd上输入cl,如果如下图所示那就跳过这步)

愿成冬天里一阵温暖的南风~~ 3697

c语言转换为python语言_C语言程序转换为Python语言

python语言是支持用c来它写模块的,其实现有的很多模块也是用c写的。这里我做个简单的介绍。先决条件:1.在linux上编写,需要自己编译出python的动态连接库。也就是要有libpython2.5.so这样的东西。2.在windows上,则需要mingw这个编译环境。其实只要你安装了Dev-Cpp就有了。当然还安装了windows版的python.一、先把源代码帖上来,很简单,假设保存为 h...

weixin_39667398的博客 4841

python扩展c语言,Python 的C语言扩展

操作系统:linux debian 4.0, python版本2.5s1:安装python2.5-dev。因为Python.h是在dev包中才有。test@debian:~/test_python_c$ aptitude search python2.5-devp python2.5-dev - Header files and a static libra...

weixin_35998791的博客 202

Windows 系统下 Python C 扩展模块开发全攻略

在 Windows 系统上开发 Python C 扩展模块,关键在于选择合适的编译器、正确配置开发环境、编写有效的setup.py文件,以及掌握编译、调试和分发的方法。深入了解 Python C 扩展模块编译过程的详细步骤,有助于开发者更好地处理编译过程中出现的问题,提高开发效率。通过遵循本文介绍的步骤和注意事项,开发者可以顺利在 Windows 平台上开发和部署高质量的 Python C 扩展模块。TAG:Windows 系统;Python C 扩展模块;编译器选择;distutils;

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 976

如何在 Windows 上调试 Python 的 C 扩展

3. 在VSCode中打开你的项目,然后在左侧的Explorer视图中右键点击你的`.c`文件,选择"Configure for C/C++",然后选择"Add Configuration..."。在弹出的对话框中,选择"Windows",然后点击"Create".VSCode会自动生成一个`.vscode/c_cpp_properties.json`文件,其中包含了编译和链接你的C代码所需的配置。例如,你可能需要处理一些复杂的C语言语法和库函数,或者你需要在多个Python文件中定义你的C扩展。

551

在Windows中使用VC++2010扩展python

昨天看了一下使用C语言对python进行扩展,但是死活都不成功,后来发现原来那个方法是Linux平台的方法,直接郁闷到了。然后今天在网上查了一下在Windows下怎么扩展python,但是也是始终无法成功,这让我相当的不爽啊,难道就因为我用的是VC++2010吗?后来实在没办法,

kosl90的专栏 5109

python转c语言的办法_(转)C语言来写python扩张

本文介绍如何用 C 语言来扩展 python。所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能。我在写以下代码的时候用到的环境是:windows xp, gcc.exe 4.7.2, Python 3.2.3。第一步 撰写C语言的DLL创建一个 clip.c 文件,内容如下:第二步 写 python 的 setup.py创建一个 setup...

weixin_39692245的博客 1940
上一篇: EF Mysql confgi配置文件遇到的坑
下一篇: Asp.Net Core 模型绑定 浅析
IT回忆录
博客等级 码龄16年 42粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值