python调用c/c++方法
# python调用c/c++方法:一般先将c++代码转化为C类型dll(推荐使用静态dll,否则容易出现各种链接库问题;记得使用extern "C" _declspec(dllexport))
# extern "C" _declspec(dllexport) int iadd(int a ,int b)
# return a + b;
#
# extern "C" _declspec(dllexport) char* padd()
# return "test pythondll";
#
# extern "C" _declspec(dllexport) char* pxadd(char *p)
# return p;
# c++大数据量结果返回时候需要特殊处理
# CString gstrData;//全局变量释放
# extern "C" _declspec(dllexport) char* pcx_add(char *p)
# gstrData = CString(p);//p的内容超过1024字节以上推荐
# return (char*)gstrData.GetBuffer(0);
# extern "C" _declspec(dllexport) void py_ClearMenmory()
# {
# gstrData.ReleaseBuffer();
# }
class PythonDll:
def __init__(self):
if sys.maxsize > 2 ** 32:
pydll = ctypes.cdll.LoadLibrary(r'64.dll')
else:
pydll = ctypes.cdll.LoadLibrary(r'32.dll')
"""
1.int 类型
"""
pydll.iadd.restype = ctypes.c_int
idata = pydll.iadd(1, 2)
print(idata)
"""
2.char* 类型
"""
pydll.padd.restype = ctypes.c_char_p
pdata = pydll.padd()
print(pdata)
"""
3.char* 类型 参数char*
"""
pydll.pxadd.restype = ctypes.c_char_p
pdata = pydll.pxadd("test pythondll".encode(encoding="gbk"))
print(pdata)
"""
4.char* 类型 参数char* 中文需要转化
"""
pydll.pxadd.restype = ctypes.c_char_p
pdata = pydll.pxadd("测试 pythondll".encode(encoding="gbk"))
print(str(pdata, encoding="gbk"))
"""
5.char* 类型 参数char* 中文需要转化(返回值内容无限大)
"""
pydll.pcx_add.restype = ctypes.c_char_p
pdata = pydll.pcx_add("测试 pythondll..........".encode(encoding="gbk"))
print(str(pdata, encoding="gbk"))
pydll.py_ClearMenmory() # 释放内存
python调用c/c++方法的更多相关文章
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
- 自然语言处理工具python调用hanlp的方法步骤
Python调用hanlp的方法此前有分享过,本篇文章分享自“逍遥自在017”的博客,个别处有修改,阅读时请注意! 1.首先安装jpype 首先各种坑,jdk和python 版本位数必须一致,我用的是 ...
- python调用c的方法
虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成.这样,就需要用python来调用c的代码了 具体流程: c编写相关函数 ,编译成库 然后在python中加载这些库,指定调用函数. ...
- python调用系统命令的方法
1.os模块 (1)system()方法 这个方法是直接调用标准C的system() 函数,在一个子终端运行系统命令 (2)poen()方法 这个方法执行命令后通过一个管道文件将结果返回 3.subp ...
- 制作大漠字库并用python调用大漠工具方法来识别文字
1.制作字库 1.截取需要的图片 2.这里截取了"火狐主页"四个字,接下来抓取文字的颜色 3.颜色由是由三个部分组成,即R G B其中的R是由00-FF(16进制) 即0-255个 ...
- python 调用 C++ code
本文以实例code讲解python 调用 C++的方法. 1. 如果没有参数传递从python传递至C++,python调用C++的最简单方法是将函数声明为C可用函数,然后作为C code被pytho ...
- python调用powershell、远程执行bat
python调用本地powershell方法 1.现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通: function test_ping($iplist) { f ...
- Python调用windows下DLL详解
Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...
- Python调用shell命令常用方法
Python调用shell指令 方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未 ...
- python子类调用父类的方法
python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...
随机推荐
- uniapp 开发微信小程序问题笔记
最近接手了一个小程序开发,从头开始.使用了 uniapp 搭建,以前没有做过小程序开发,着手看文档.查文档.一步一步完成了任务的开发.特此记录开发过程中的问题. 开发建议: 使用 HBuilderX ...
- .NET 7新特性
2022年11月份微软推出了带有STS(标准期限支持)的.NET版本7,仅提供18个月的支持. 微软今年推出了STS版本,因为它已经在2019年提到,它将在每年11月左右发布一个新版本的.NET. 但 ...
- Python面向对象(上)
Python面向对象(上) python是一门面向对象的编程语言.何为对象?对象是类的实例.在生活中,任何一个事物都是一个对象,如牡丹花.牡丹花的类是花类,同样属于花类的还有荷花.月季花.金银花.菊花 ...
- WPF中下拉框即可以选择项也可以作为只读文本框使用
1.需求 当前在开发的系统需要一个这样的控件. (1)可以选择已有的选择项,类似于ComboBox选择: (2)可以通过其他按钮点击,选择一个文件,选择后,把文件路径显示到控件上,并且处于只读状态,行 ...
- 【随笔记】T507 Android10 EC200U-CN 4G Cat1 移植
基本信息 硬件信息 硬件平台:T507 (Android 10 Linux 4.9) 模组型号:EC200U-CN(Cat1)(展讯芯片) 相关文件 代理提供 longan/kernel/linux- ...
- 【分析笔记】Linux input 子系统原理分析
一.input 子系统简介 输入子系统主要用于支持各种输入设备,可大大简化这类设备驱动的开发难度.以下为个人的理解,可能不同的内核版本会略有差异,在这里分析的内核为 linux-4.9. 无论在 Li ...
- touchke变化值小的解决办法
方法一,提高主频 方法二,减小充电时间. 方法三,充电电流减半(具体看RM手册touchkey章节) 建议测试时采样值维持在3000-4000 其实以上操作就是增大Y轴间隔,以增大按下和未按下时的采样 ...
- DataX二次开发——新增HiveReader插件
一.研发背景 DataX官方开源的版本支持HDFS文件的读写,并没有支持基于JDBC的Hive数据读写,很多时候一些数据同步不太方便,比如在读取Hive之前先执行一些sql.读取一些Hive的视图数据 ...
- KingbaseES恢复被删除数据
KingbaseES恢复被删除数据 生产环境操作请先备份整个data目录或cp 当前数据目录/home/kingbase/pg_data到新的data目录,然后在备份的data目录进行恢复被删除数据操 ...
- rust 模块、路径、项目类型等相关内容
rust 模块路径 转载 https://blog.csdn.net/wowotuo/article/details/107591501 rust 项目编译类型 转载 https://blog.51c ...