Python调用c++生成的dll

news2025/1/16 5:10:00

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 转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot + Disruptor 实现特快高并发处理,支撑每秒 600 万订单无压力!

背景 工作中遇到项目使用Disruptor做消息队列&#xff0c;对你没看错&#xff0c;不是Kafka也不是rabbitmq。Disruptor有个最大的优点就是快&#xff0c;还有一点它是开源的哦&#xff0c;下面做个简单的记录。 Disruptor介绍 Disruptor 是英国外汇交易公司LMAX开发的一个高…

中国式复杂报表制作工具及技巧,解决90%效率问题

最大的数据杀手——中国式复杂报表 作为资料人&#xff0c;在日常生活和工作之中&#xff0c;我们是否经常被要求制作如下图所示的一些数据统计表格&#xff1a; 总的来看&#xff0c;很多人经常发现自己虽然有数据&#xff0c;却不知道用什么图表来进行数据最佳形式的价值表…

「我在淘天做技术」一篇文章告诉你商品团队在做哪些有意思的事?

作者:许令波(君山) 近期淘天集团秋季 2024 届校园招聘正式启动&#xff0c;预计将发放 2000 多个 offer&#xff0c;其中技术类岗位占比超过 50%。为了方便大家更真实地了解淘天技术的布局和现状&#xff0c;我们策划了「我在淘天做技术」系列&#xff0c;首次全面分享淘天技术…

【限时优惠】RHCE9.0培训考证-红帽官方授权中心

【微|信|公|众|号&#xff1a;厦门微思网络】 官网&#xff1a; www.xmws.cn 相信关注红帽认证的小伙伴都已经知道了&#xff1a;2022 年 5 月 18 日&#xff0c;红帽公司宣布推出红帽企业 Linux 9 (RHCE 9)&#xff0c;这是世界领先的企业 Linux 平台的最新版本。 特别提醒的是…

怎样成功部署CRM销售管理系统?

部署CRM销售管理系统可以是自上而下的落实&#xff0c;也可以自下而上让基层员工提出他们的建议&#xff0c;毕竟他们才是系统的使用者。成功部署CRM销售管理系统离不开以下几点要素&#xff1a; 1、全渠道沟通 在通讯技术发达的今天&#xff0c;人们可以在任何地方进行视频通…

Unity3D Shader新手入门教程:3D溶解与腐蚀特效详解

引言 在游戏开发中&#xff0c;特效是非常重要的一部分&#xff0c;它能够增加游戏的趣味性和可玩性。其中&#xff0c;Shader特效是一种非常常见和常用的特效&#xff0c;它能够通过改变物体表面的渲染方式来实现各种各样的特效效果。本文将详细介绍Unity3D中的Shader 3D溶解与…

华为云应用中间件DCS系列—Redis实现(电商网站)秒杀抢购示例

云服务、API、SDK&#xff0c;调试&#xff0c;查看&#xff0c;我都行 阅读短文您可以学习到&#xff1a;应用中间件系列之Redis实现&#xff08;电商网站&#xff09;秒杀抢购示例 1 什么是DEVKIT 华为云开发者插件&#xff08;Huawei Cloud Toolkit&#xff09;&…

游戏设计模式专栏(十二):在Cocos游戏开发中运用代理模式

点击上方亿元程序员关注和★星标 引言 大家好&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》&#xff0c;让糟糕的代码在潜移默化中升华&#xff0c;欢迎大家关注分享收藏订阅。 代理模式&#xff08…

【Tomcat】为Tomcat服务配置本地Apr库以提升性能

关于 apr 和 apr-util 对 Tomcat 服务的性能提升的说明&#xff1a; 要测APR给tomcat带来的好处最好的方法是在慢速网络上&#xff08;模拟Internet&#xff09;&#xff0c;将Tomcat线程数开到300以上的水平&#xff0c;然后模拟一大堆并发请求。如果不配APR&#xff0c;基本…

el-pagination怎么修改样式,分页修改样式

/* 分页距离右边20&#xff0c;距离底边20 */ .pagination-container .el-pagination{position:absolute;right:20px;bottom:20px;} 自己写一个分页组件&#xff0c;用到绝对定位和相对定位

Cornerstone for Mac:高效SVN管理的黄金标准

在当今的软件开发领域&#xff0c;版本控制系统是不可或缺的一部分。其中&#xff0c;Subversion&#xff08;SVN&#xff09;是一个广泛使用的版本控制系统&#xff0c;有助于团队协同工作&#xff0c;实现代码的版本管理和追踪。对于Mac用户来说&#xff0c;Cornerstone是一款…

PLC寄存器基础知识

这篇博客介绍的内容其实是微机原理的相关知识&#xff0c;如果没有修过微机原理&#xff0c;可以找相关书籍看一看&#xff0c;众所知周PLC也是属于微控制器。下面我们看下西门子PLC常用的寄存器地址关系。 1、西门子寄存器地址关系 待续......

togaf入门介绍

TOGAF标准是一个开放的、行业共识的企业架构框架。 它是一个基础框架&#xff0c;这意味着它适用于任何环境下的任何类型的架构的开发。这一基础框架是由The Open Group TOGAF补充的库&#xff0c;该库是一个广泛和不断增长的指导材料组合&#xff0c;为在具体情况下应用TOGAF …

SAP S4 BAPI更新BP税号类型CN0自动覆盖CN5

BAPI更新BP税号类型CN0自动覆盖CN5 使用cl_md_bp_maintain>maintain更新BP税号CN0的数据&#xff0c;更新结果都会变成CN5类型&#xff0c;CN1类型一切正常。 1、BP税号 2、跟踪方法中代码 查看底层逻辑&#xff0c;发现CN0都被强制替换成CN5了&#xff0c;BP GUI界面还能…

MultiPlayerShoot----C++学习记录01打包测试项目

首先将多人游戏插件plug文件夹移至项目目录 打开config/DefaultEngine.ini&#xff08;5.0的虚幻引擎内容略不一样&#xff09;和Game.ini对里边的内容进行编辑。 DefaultEngine.ini [/Script/Engine.GameEngine] NetDriverDefinitions(DefName"GameNetDriver",Driv…

win 10怎么录屏?教你轻松捕捉屏幕活动

在当今科技快速发展的时代&#xff0c;录屏已成为信息分享、教学、游戏直播等方面的重要工具。无论是为了制作教程、分享游戏过程还是保存重要信息&#xff0c;录屏功能都发挥着举足轻重的作用。可是很多人不知道win 10怎么录屏&#xff0c;本文将详细介绍win10的三种常用录屏方…

物流监管:智慧仓储数据可视化监控平台

随着市场竞争加剧和市场需求的不断提高&#xff0c;企业亟需更加高效、智能且可靠的仓储物流管理方式&#xff0c;以提升企业的物流效率&#xff0c;减少其输出成本&#xff0c;有效应对市场上的变化和挑战。 图扑自研 HT for Web 产品搭建的 2D 智慧仓储可视化平台&#xff0c…

操作系统进程2---进程成员以及fork

在上一次我们认识了什么是进程以及进程在操作系统中是如何被管理的。今天我们来认识一下pcb中的成员Linux中我们可以使用ps命令中的ajx选项来输出当前系统中所有的进程 而我们就先从pid和ppid来入手。 文章目录 1.进程中的pid和ppid2.父进程与子进程的简单认识3.系统调用函数…

【2023集创赛】信诺达杯三等奖:关于LM386N-1音频功率放大器性能的测量指南

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;信诺达杯全国三等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子…

牛客:FZ35 滑动窗口最小值

FZ35 滑动窗口最小值 文章目录 FZ35 滑动窗口最小值题目描述题解思路题解代码 题目描述 题解思路 遍历数组&#xff0c;然后遍历窗口找到最小值&#xff0c;加入到结果集里面 题解代码 func minSlidingWindow( nums []int , k int ) []int {// write code heren : len(nums…