首页 > 编程语言 >python和C++调用动态库

python和C++调用动态库

时间:2023-01-16 11:00:10浏览次数:46  
标签:调用 python double C++ libmean mean

python和C++调用动态库

python和C++相互调用动态库的方法有4种:

  • python调用C/C++编译的动态库
  • python调用python编译的动态库
  • C/C++调用python编译的动态库
  • C/C++调用C/C++编译的动态库

python调用C/C++编译的动态库

mean.c

#include "mean.h"

double mean(double a, double b) {
  return (a+b)/2;
}

mean.h

// Returns the mean of passed parameters
double mean(double, double);

C/C++代码编译

gcc -shared -o libmean.so.1 mean.c

python调用

import ctypes
libmean = ctypes.CDLL("libmean.so.1") # loads the shared library
libmean.mean.restype = ctypes.c_double # define mean function return type

# 方法一
libmean.mean(ctypes.c_double(10), ctypes.c_double(3)) # call mean function needs cast arg types
# 6.5

# 方法二(推荐)
libmean.mean.argtypes = [ctypes.c_double, ctypes.c_double] # define arguments types
libmean.mean(10, 3) # call mean function does not need cast arg types
# 6.5

type(libmean.mean(10, 5)) # returned value is converted to python types
# <type 'float'>

类型映射表
image

python调用python编译的动态库

python编译出动态库方法,setup.py方法
val.py

import os

def i_sum(a, b):
    # 计算两数之和
    c = a + b
    return c

setup.py

# pip install cpython
from distutils.core import setup
from Cython.Build import cythonize

# 如果有多个python文件在列表中添加
setup(ext_modules=cythonize(["val.py"]))

python编译
在setup.py同级路径,会生成val.cpython-38-x86_64-linux-gnu.so

python调用python编译生成的动态库一定不能改动态库名字

python setup.py build_ext --inplace

python调用

import val

a = 10
b = 2
print(val.i_sum(a,b))
# 12

C/C++调用动态库那就简单了

标签:调用,python,double,C++,libmean,mean
From: https://www.cnblogs.com/nanmi/p/17054911.html

相关文章

  • python—web自动化(4)—测试框架之unittest2使用
    学习目标:自动化测试框架搭建需求分解:unittest2测试用例BaseTestCase:封装测试用例中相同的部分数据驱动测试(ddt):测试数据与操作分离生成测试报告:......
  • python爬虫电影数据抓取实战
    想要了解最近电影院播放的都有什么影视电影,哪部值得推荐,如果单纯靠手动收搜不全面,下面我们就先使用urllib.request模块抓取整个网页,再使用re模块获取电影信息,做个简单的爬虫......
  • 【Python学习】图片放缩
    使用图片对模型进行训练时,对图片的大小有一定的要求,因此需要对图片进行放缩。安装包PILpipinstallPillow简单介绍基本使用方法#ImportsPILmodulefromPILi......
  • 学习python 爬虫之pyppteer
    1、安装pyppteer库 pipinstallpyppteer 如果安装出错,使用国内镜像安装 pipinstallpyppeteer-ihttps://pypi.douban.com/simple2、下载chromium浏览......
  • Python 量化交易编程技巧积累
    1.计算股票中的16个常用指标-stockstatus。地址:https://blog.csdn.net/freewebsys/article/details/785785482.获得全世界所有市场的交易日历-exchange_calendar。地址:ht......
  • 尝试python 爬虫新工具playwright
    1、安装playwright库pipinstallplaywright 2、安装浏览器驱动文件(安装过程稍微有点慢)python-mplaywrightinstall......
  • 【801】Python绘制机器学习特征相关性热力图
    参考:python特征相关性热力图怎么画_如何在python中绘制热地图(实例)参考:seaborn.heatmap参考:Choosingcolorpalettes根据具体的特征数据集,计算不同特征之间的相关性,然后......
  • AirSim 自动驾驶仿真 (2-3) python控制无人机 win10
    1首先搭建好环境参考 2python控制https://blog.csdn.net/Zhaoxi_Li/article/details/108002544官方代码位置 自己pythonj教程https://www.cnblogs.com/gooutlo......
  • C++11的多线程开发
    多线程并发总览创建线程使用互斥量异步线程原子类型生产者消费者模型线程池‍创建线程#include<iostream>#include<thread>#include<mutex>#include<fu......
  • C++|变量
    C++|变量前言在C++编程中,需要用到很多种变量本文将详谈几种常见变量如有错误,欢迎指出一、数字数据类型如图所示,虽然C++提供了许多数据类型,但在最广泛的意义上......