当前位置: 首页 > news >正文

Python调用c++生成的dll

Python调用c++生成的dll

  • 1.简单例子
    • 1.1 vs2019 c++生成dll
    • 1.2 Python端调用
  • 2.调用c++类生成的dll
    • 2.1 vs cpp端生成dll
    • 2.2 Python端调用
  • 参考文献

1.简单例子

1.1 vs2019 c++生成dll

  • 项目中添加add.cpp文件
extern "C" int __declspec(dllexport) add(int x, int y)
{return x + y;
}
  • 配置属性

在这里插入图片描述

  • 生成dll
    点击生成解决方案,到输出目录文件夹查看add.dll文件是否正常生成。

1.2 Python端调用

from ctypes import*import sys
try:mydll = cdll.LoadLibrary(r"add.dll")
except:sys.exit("No shared DLL/SO found")print(mydll.add(3,4))
#7

2.调用c++类生成的dll

2.1 vs cpp端生成dll

  • 添加myDll.cpp文件
#include<iostream>
using namespace std;
class myDll
{
public:void helloDll() {cout << "hello dll" << endl;};
};extern "C" 
{myDll obj;extern "C" _declspec(dllexport) void helloDll() {return obj.helloDll();}
}
  • 配置属性

dll名设置为myDll.

  • 生成dll文件

参考第一个例子。

2.2 Python端调用

from ctypes import*import sys
try:mydll = cdll.LoadLibrary("myDll.dll")
except:sys.exit("No shared DLL/SO found")mydll.helloDll()#hello dll

测试通过!

参考文献

[1] python调用dll 结构体 python如何调用dll 转载

相关文章:

Python调用c++生成的dll

Python调用c生成的dll 1.简单例子1.1 vs2019 c生成dll1.2 Python端调用 2.调用c类生成的dll2.1 vs cpp端生成dll2.2 Python端调用 参考文献 1.简单例子 1.1 vs2019 c生成dll 项目中添加add.cpp文件 extern "C" int __declspec(dllexport) add(int x, int y) {retu…...

算法基础学习|二分

二分 模板 整数二分模板 bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid 1, r]时使用&#xff08;即寻找左边界使用&#xff09;&#xff1a; int bsearch_1(int l, int r) {while (l < r){int mid l r >> 1;if (…...

mac M1 pro 安装grpc 报错

pecl install grpc # a few moments later 。。。。# 执行 php -i | grep grpc## 报错 PHP Warning: PHP Startup: Unable to load dynamic library grpc.so(tried: /opt/homebrew/lib/php/pecl/20190902/grpc.so (dlopen(/opt/homebrew/lib/php/pecl/20190902/grpc.so, 0x0…...

交银国际:拼多多财报预测:主站盈利提升有望带动业绩超预期

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;交银国际今日发布关于拼多多第三季度财报预测&#xff1a;主站盈利提升有望带动业绩超预期的研报。交银国际主要观点如下&#xff1a; 预计拼多多(PDD)第三季度业绩将好于市场预期&#xff1a;我们…...

【SA8295P 源码分析 (二)】50 - OpenWFD Server 启动流程 之 wfd_server_tpp 线程池源码分析

【SA8295P 源码分析】50 - OpenWFD Server 启动流程 之 wfd_server_tpp 线程池源码分析 一、thread_pool 创建过程源码分析1、thread_pool_create()2、thread_pool_start()二、thread_pool_t *wfd_server_tpp 使用场景源码分析系列文章汇总见:《【SA8295P 源码分析 (二)】Disp…...

9.strspn函数

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h>/*----------------------函数解析----------------------*/ /*函数原型&#xff1a;size_t strspn(char const *str, char const* group) */ /*函数入参&#xff1a;从str第一个元素开始往后…...

电脑蓝牙与ESP32蓝牙连接,让电脑发现ESP32

win11蓝牙默认只查看常见蓝牙设备。ESP32创建的蓝牙很有可能是看不到的。 再蓝牙设备发现一栏选择高级&#xff0c;才能查看所有蓝牙设备。 只要下面几行代码&#xff0c;就能让PC发现ESP32 #include <BLEDevice.h> // 引入相关库void setup() {BLEDevice::init("…...

k8s 暴露pod

kubenretes中暴露Pod及Service的6种方式 &#xff0c;分别为port_forward、hostNetwork、hostPort、nodePort、loadBalancer、Ingress。 下面讲下nodeport nodePort Kubernetes中的service默认情况下都是使用的ClusterIP这种类型&#xff0c;这样的service会产生一个Cluster…...

Apache Dubbo 首个 Node.js 3.0-alpha 版本正式发布

作者&#xff1a;蔡建怿 关于Apache Dubbo3 Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架&#xff0c;同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。经过近几年发展&#xff0c;Dubbo3 已在阿里巴巴集团各条业务线实现全面…...

Node.js中Buffer API详解

Node.js中Buffer API详解 在Node.js中&#xff0c;Buffer是一个用于处理二进制数据流的全局对象&#xff0c;它类似于数组&#xff0c;但可以存储任意大小的数据。Buffer对象是由C代码实现的底层结构&#xff0c;而JavaScript代码则提供了一些高级的API。本文将介绍Node.js中B…...

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划&#xff08;三&#xff09; 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…...

gitLab更新11.11.3->16.1.5

gitlab当前版本11.11.3 postgreSQL当前版本 9.6.11 gitlab升级顺序 11.11.3 -》 12.0.12 -》 12.10.14 -》13.0.14 -》 13.1.11 -》13.8.8 -》13.12.15 -》14.0.12 —》 14.3.6 -》 14.9.5 -》 14.10.5 -》 15.0.5 -》 15.1.6 -》 15.4.6 -》 15.11.13 -》 16.0.X —》 16.…...

12-k8s-HPA自动扩缩容

文章目录 一、k8s弹性伸缩类型二、HPA原理三、metrics-server插件四、创建nginx提供负载测试五、部署HPA master操作即可 一、k8s弹性伸缩类型 Cluster-Autoscale: 集群容量(node数量)自动伸缩&#xff0c;跟自动化部署相关的&#xff0c;依赖iaas的弹性伸缩&#xff0c;主要用…...

从十月稻田,看大米为何能卖出200亿市值?

国无农不稳&#xff0c;民无粮不安。新时代的农村农民&#xff0c;需要现代化的农业作依托&#xff0c;而在农业现代化的过程中&#xff0c;品牌化、数字化成为至关重要的一环。 金秋十月&#xff0c;从南到北&#xff0c;从东到西&#xff0c;中国农村的每一块土地都洋溢着丰…...

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高&#xff0c;消费者对生活质量有着越来越高的期望。生活中&#xff0c;各式各样的电气设备为我们的生活带来了便利&#xff0c;在安装使用这些用电器时&#xff0c;需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…...

使用pdf.js预览pdf文件时如何兼容chrome66版本

最近在做一个需求&#xff0c;在PC端实现预览pdf文件的功能&#xff0c;但是要最低兼容chrome的66版本&#xff0c;因为公司用的chrome浏览器最低版本就是66版本。 现在下载PDF.js&#xff08;链接&#xff1a;https://mozilla.github.io/pdf.js/&#xff09; 下载下来的版本是…...

一篇文章讲明白double、float丢失精度的问题

1.背景 1.10.1 1.2000000000000002 发现上面计算的值竟然和数学计算不一致 2. 问题 计算机是通过二进制计算的&#xff0c;如果我们在二进制的视角来看待上面问题&#xff0c;就很容易发现问题了。 例如&#xff1a;把「0.1」转成二进制的表示&#xff0c;然后还原成十进制&…...

Day 2 Qt

#include "my_widget.h" #include "ui_my_widget.h"My_Widget::My_Widget(QWidget *parent): QWidget(parent), ui(new Ui::My_Widget) {ui->setupUi(this);//窗口的相关设置 // this -> resize(800,500);this -> setWindowTitle("QQ聊天…...

ArmSoM-W3之RK3588 MPP环境配置

1. 简介 瑞芯微提供的媒体处理软件平台&#xff08;Media Process Platform&#xff0c;简称 MPP&#xff09;是适用于瑞芯微芯片系列的 通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理&#xff0c;其目的是为了屏蔽不 同芯片的差异&#xff0c;为使用者…...

【C++ 拷贝构造函数详解】

在 C 编程中&#xff0c;拷贝构造函数是一个重要的概念&#xff0c;用于创建一个对象的副本。拷贝构造函数允许你在不改变原始对象的情况下创建一个新的对象&#xff0c;这在很多情况下非常有用。在本篇博客中&#xff0c;我们将详细讨论 C 拷贝构造函数的用法和实现。 什么是…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...