C++项目打包成可调用dll文件python调用

news2024/10/5 15:35:57

目录

1.原项目如图

 2.直接在项目对应地方新增dll.h,dll.cpp

 3.改变工程的配置类型---动态库(.dll)

 4.生成解决方案----可调用dll文件

5.查找dll依赖的其他dll

 6.python调用dll

7.python调用dll打包成exe 相关dll要放一个文件夹


1.原项目如图

包括头文件uiaccess.h,源文件hwtest.cpp

 2.直接在项目对应地方新增dll.h,dll.cpp

解决方案-头文件(右击)-添加-新建项dll.h

解决方案-源文件(右击)-添加-新建项dll.cpp

 dll.h文件内容如下:

#ifndef DLL_H_
#define DLL_H_
extern "C" _declspec(dllexport) int uiastart();
#endif

 dll.cpp文件与 dll.h文件对应,内容如下:

//dll.cpp
#include <iostream>
#include <windows.h>
#include "uiaccess.h"
#include <tlhelp32.h>
#include <tchar.h>

extern "C" _declspec(dllexport)int uiastart()
{
	int pi = IsUIAccess();
	//std::cout << "pi: " << pi << "\n";
	//std::cout << "Hello World!\n";
	//MessageBox(NULL, L"你好,我是LCR", L"提示", MB_SYSTEMMODAL);
	return pi;
}

 uiaccess.h  需要其他模块调用的函数加入头文件

 3.改变工程的配置类型---动态库(.dll)

项目-属性-常规,改成动态库

 4.生成解决方案----可调用dll文件

选择“debug”或"Release",我的环境X64,进行生成解决方案

 

 执行后,项目目录下会生成

 

5.查找dll依赖的其他dll

打开vs开发人员命令提示符

 执行命令:dumpbin /dependents dll路径

 电脑查找dll,复制出来,本机没有网上下载下来(和调用的dll放在一起,防止有些电脑没有相关dll无法运行)

 6.python调用dll

dll文件(及相关依赖dll)放入调用文件的同一目录
from ctypes import CDLL
#调用窃权
dll=CDLL('.\\hwtest.dll')
isuia = dll.uiastart()
print("权限数字"+str(isuia))

7.python调用dll打包成exe 相关dll要放一个文件夹

 

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

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

相关文章

Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍&#xff1a;Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。该词来源于希腊语 chronos(χρ?…

【云计算】Ubuntu多种安装docker方式

文章目录 前言一、docker官网二、安装docker1、第一种方式&#xff08;官方&#xff09;2、使用脚本安装&#xff08;阿里云&#xff09;&#xff1a;3、使用官方脚本安装&#xff1a;拉取镜像&#xff08;solo博客部署&#xff09; 前言 Docker是一款开源的容器化平台&#x…

Misc(4)

RAR 打开是个加密压缩文件&#xff0c;给了提示说是4位纯数字加密 暴力破解为4位数字&#xff0c;获得flag QR 下载下来是一个二维码 很简单&#xff0c;利用工具一下就解出来了 镜子里的世界 打开后是一张图片&#xff0c;根据题目的提示&#xff0c;猜想可能是镜像翻转后得到…

java springboot整合MyBatis做数据库查询操作

首先 我们还是要搞清楚 MyBatis 工作中都需要那些东西 首先是基础配置 你要连哪里的数据 连什么类型的数据库 以什么权限去连 然后 以 注解还是xml方式去映射sql 好 我们直接上代码 我们先创建一个文件夹 然后打开idea 新建一个项目 然后 按我下图的操作配置一下 然后点下一…

小米秋招笔试题(强化基础)

1、已知const arr [A, B, C, D, E, F, G]&#xff0c;下面可以获取数组最后一项的表达式有 A arr[6] B arr.pop() C arr.shift() D arr.unshift() 答案&#xff1a; AB 解析&#xff1a; shift() 方法用于把数组的第一个元素从其中删除&#xff0c;并返回第一个元素的值。…

Python自动化测试框架:Pytest和Unittest的区别

pytest和unittest是Python中常用的两种测试框架&#xff0c;它们都可以用来编写和执行测试用例&#xff0c;但两者在很多方面都有所不同。本文将从不同的角度来论述这些区别&#xff0c;以帮助大家更好地理解pytest和unittest。 1. 原理 pytest是基于Python的assert语句和Pyth…

leetcode 124.二叉树中的最大路径和

1.题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &…

【Spring Cloud】Spring Cloud Alibaba-- 分布式事务Seata原理

文章目录 前言一、Seata 介绍1.1、Seata 简介1.2、Seata 的核心组件1.3、Seata 的整体执行流程 二、Seata 的 AT 模式原理2.1、AT 模式的整体执行流程2.2、AT 模式两阶段详细流程2.2.1、第一阶段的详细执行流程2.2.2、第二阶段提交的详细执行流程2.2.3、第二阶段回滚的详细执行…

独家揭秘:Kotlin K2编译器的前世今生

独家揭秘&#xff1a;Kotlin K2编译器的前世今生 也许您已经观看了最近的 KotlinConf 2023 主题演讲&#xff0c;关于 K2 编译器的更新。什么是 K2 编译器&#xff1f; 在搞清楚这个问题之前&#xff0c;我们需要了解Kotlin 使用的不同种类的编译器及其差异&#xff0c;以及编…

Python--数据类型

Python--数据类型 <font colorblue >一、数据的分类<font colorblue >二、数值类型<font colorblue >1、整型&#xff1a;int<font colorblue >2、浮点型&#xff1a;float<font colorblue >3、复数类型&#xff1a;complex <font colorblue …

加速应用迭代与更新:Weex与小程序容器的快速开发之道

Weex是一个跨平台的移动应用开发框架&#xff0c;由阿里巴巴旗下的阿里巴巴前端团队开发。它允许开发者使用单一的代码库来构建同时适用于iOS和Android平台的移动应用。Weex使用基于Vue.js的声明式语法来描述应用程序的界面&#xff0c;并通过JavaScript运行时引擎在移动设备上…

中国人民大学与加拿大女王大学金融硕士——人到中年还有必要在职读研吗?

人到中年&#xff0c;深刻的感受到自己能够掌控的事情越来越少&#xff0c;而焦虑越来越多。事业进入瓶颈期&#xff0c;如何开拓进阶呢&#xff0c;如何做更好的自己呢&#xff1f;看到周围有人再提升学历&#xff0c;想想自己的年龄&#xff0c;不禁感叹&#xff0c;到了中年…

牛客网最热门的1000 多Java面试题,20+ 大厂必考点及Java面试框架知识点

Java 面试 “金三银四&#xff0c;金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金三银四&#xff0c;金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介…

免费Midjourney来袭

发现一个镜像站&#xff0c;和之前发的镜像站不一样&#xff0c;这个集成了midjourney和chatgpt&#xff0c;且免翻&#xff0c;相信给很多很多用户都提供了便利吧&#xff01; 先把网站贴出来&#xff0c;有兴趣的伙伴可以玩一玩 关于以图生图&#xff0c;现在网站支持本地上…

好程序员:月薪2万程序员的简历,原来长这个样子!

6月份现在正是招聘季节&#xff0c;不少同学java岗位投递不少&#xff0c;但回复不多&#xff0c;根本原因可能是java面试简历不够吸引人。 你的java简历不会写&#xff1f;看看别人就知道咋写了&#xff0c;这里给大家拆解一份好程序员月薪2万的java简历。 java自我评价模块&a…

ABB CI546 3BSE012545R1 模块

ABB CI546 3BSE012545R1 模块. ABB CI546 3BSE012545R1 模块 电子电工技术的电力系统分析 1电子电工技能特色 电子电工技能是凭仗计算机技能开展起来的&#xff0c;并朝着智能化、网络化的方向开展。随着时代的开展&#xff0c;新式技能不断涌现&#xff0c;使传统电工技能运用…

2.Apollo测试部署-linux

1.创建数据库 1) 由于开发环境,测试环境, 生产环境用的一个portal&#xff0c;所以只需要创建ApolloConfigDB数据库 2) 创建后如下图: 2.部署服务apollo-adminservice,apollo-configservice 1) 分别修改两个服务下的数据库配置文件&#xff1a;/config/application-github.prop…

【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

停车场一键求助对讲系统

停车场一键求助对讲系统 适用性高&#xff0c;保障性能强 无论是商场的停车场&#xff0c;还是社区的停车场&#xff0c;我们的系统都能轻松应对。此外&#xff0c;可靠的保障性能&#xff0c;更能为车主提供便利的服务保障。 防盗警报&#xff0c;实现车位管理 在停车场内&…

【MySQL】 IS NOT NULL 和 != NULL 的区别?

背景 最近在开发小伙伴的需求&#xff0c;遇到了一个数据库统计的问题&#xff0c; is not null 结果正确 &#xff01;null 结果就不对&#xff0c;然后就激发了获取真理的想法&#xff0c;那必须的查查 咋回事嘞&#xff1f; 开整 在用MySQL的过程中&#xff0c;你是否存…