百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

C++调用动态库两种方式和Python调用C++动态库

off999 2025-06-18 23:30 38 浏览 0 评论

创建动态库

动态库是在程序运行时加载的库文件,并不占用程序本身大小。

选择动态库项目:

新建.h和.cpp文件:

# cat.h
#pragma once

extern "C" _declspec(dllexport) int sum(int a, int b);
# cat.cpp

#include "pch.h"
#include "cat.h"

extern "C" _declspec(dllexport) int sum(int a, int b) {
	return a + b;
}

动态库发布选择Release版本,本样例使用×64位。

C++导入动态库方法一

新建一个空的C++项目,将动态库项目中.lib和.dll文件拷贝到当前项目下:

在C++项目中,添加动态库头文件,可以不复制到当前项目下,添加现有项就可以,这里只需要逻辑上引入,但是在#include时要使用.h文件的路径,绝对路径和相对路径都可以。

#include <iostream>
#include "../../CATDLL/CATDLL/cat.h"

using namespace std;

#pragma comment(lib, "CATDLL.lib")

int main() {

	cout << sum(1, 2) << endl;

	return 0;
}
  • .h头文件:包含dll中声明输出的数据结构、类、函数等信息。
  • .lib库文件:包含被DLL导出的项目的名称和位置,在调用dll的应用程序可执行文件中,存放的并不是被调用的函数代码,而是DLL中所要调用的项目的内存地址。
  • .dll动态库:包含实际的内容,发布时只需要.exe文件和.dll文件,在同一个目录下。

也可以在项目-属性-链接器-输入-附加依赖项中进行配置:

可以省略 :#pragma comment(lib, "CATDLL.lib")

C++导入动态库方法二

#include <iostream>
#include <Windows.h>
using namespace std;

typedef int (*PSUM)(int, int);

int main() {

	HMODULE hMoudle = LoadLibrary(TEXT("CATDLL.dll"));

	PSUM psum = (PSUM)GetProcAddress(hMoudle, "sum");

	cout << psum(4, 5) << endl;

	FreeLibrary(hMoudle);

	return 0;
}

Python导入C++动态库

由于C++ dll是64位,Python也要使用64位。

import os
from ctypes import *

os.chdir("D:\Cat课件\CAT_CODING\C++项目开发\MFC进阶和动态库注入辅助\PYTEST")

dll = cdll.LoadLibrary("CATDLL.dll")

ret = dll.sum(1, 2)

print(ret)

这样,很多常用的功能都可以用 C++ 制作成动态库,供 C++ 或者Python等其他语言进行调用。

相关推荐

无限内购修改游戏大全(无限内购修改游戏大全)

破解游戏可以使用海马游戏中心当乐游戏中心疯子存档助手搜苹果,以上都是电脑版的。移动端的可以越狱下载,海马游戏助手在电脑上才有破解版,以上的几个软件几乎囊括了所有iOS非网游游戏的破解。首先下载...

字体设计在线生成免费(字体设计logo在线制作)

有一个在线制作的网站,“改图网”-“智能改图”,亲测比较好用,里面选“签名”可以改文字类图片,还有其他各种。手写字中看到一个是这样的http://diy.gaitu.com/img/13466.ht...

二维码识别器(二维码识别器设计)

商品条形码和二维码是两回事,商品条形码是厂家为了区别不同种类的商品给每个商品编的编号,这个编号每个公司都是国家工商给每个厂家设定的几百到几万个的区间,有厂家自己调配到每个产品上,在中国是独一无二的。如...

有什么好玩的单机游戏(有什么好玩的单机游戏不用网络)
  • 有什么好玩的单机游戏(有什么好玩的单机游戏不用网络)
  • 有什么好玩的单机游戏(有什么好玩的单机游戏不用网络)
  • 有什么好玩的单机游戏(有什么好玩的单机游戏不用网络)
  • 有什么好玩的单机游戏(有什么好玩的单机游戏不用网络)
ie浏览器网页入口(ie浏览器网页入口网址)

ie浏览器的网页版登录入口是about:blank,即为“空白页”。空白页也被称为首页,是登录的入口,是用户打开浏览器时默认打开的网页,主要包含个人主页、网站网页、组织或活动主页、公司主页等。没有手...

地铁逃生正版下载入口(pubg正版下载入口)

以下是在Android设备上下载PUBG地铁逃生的步骤:1.打开“GooglePlay商店”应用程序。2.在搜索栏中输入“PUBGMobile”。3.点击找到的“PUBGMobile”应用...

ps电脑版官方下载(photoshop官方下载电脑版)

处理后点击保存,然后另存为就可以将照片保存到电脑的任何位置。注意保存过程中,我们一般将图片保存为原图,才能够使保存的照片清晰度能够得到保证。图片处理好之后,我们可以将其剪切到粘贴板。然后采用手机鼠标右...

360智能摄像机app下载(360摄像头下载安装)

是的,360手机卫士里面可以下载app。360手机卫士是一款集安全、清理、管理、优化、加速等多种功能于一身的手机软件,其中下载app也是其重要的功能之一。用户可以通过360手机卫士自带的应用商店或者搜...

软件大全资源库(全网软件合集软件库)
  • 软件大全资源库(全网软件合集软件库)
  • 软件大全资源库(全网软件合集软件库)
  • 软件大全资源库(全网软件合集软件库)
  • 软件大全资源库(全网软件合集软件库)
下载歌曲不收费的音乐软件(有没有下载歌曲不收费的音乐软件)

目前市面上存在着一些,如Spotify、Pandora等。因为这些软件的收益主要来自于广告和会员制度,用户在免费听歌的同时会因为广告等被打断,而会员制度则提供更多高品质的音质以及无广告播放的服务。用户...

2025酷狗老旧版本下载安装(酷狗音乐2020老版本下载安装)
  • 2025酷狗老旧版本下载安装(酷狗音乐2020老版本下载安装)
  • 2025酷狗老旧版本下载安装(酷狗音乐2020老版本下载安装)
  • 2025酷狗老旧版本下载安装(酷狗音乐2020老版本下载安装)
  • 2025酷狗老旧版本下载安装(酷狗音乐2020老版本下载安装)
搜狗翻译在线翻译(搜狗翻译在线翻译官网)
  • 搜狗翻译在线翻译(搜狗翻译在线翻译官网)
  • 搜狗翻译在线翻译(搜狗翻译在线翻译官网)
  • 搜狗翻译在线翻译(搜狗翻译在线翻译官网)
  • 搜狗翻译在线翻译(搜狗翻译在线翻译官网)
天涯明月刀手游官网(天涯明月刀手游官网入口)

如果在天涯明月刀手游的PC端无法听到语音,可能是由于以下原因:1.检查游戏内设置:打开游戏,在设置菜单中查找音频设置选项。确保音频输出设备正确选择,并将音量设置为适当的水平。还可以尝试调整其他相关的...

愤怒的小鸟变形金刚破解版(愤怒的小鸟愤怒的小鸟变形金刚破解版)

怒鸟红擎天柱最强。变形金刚的首领,拥有大型卡车的变身形态,是新手登场的必备角色。主要用来过掉第一章的剧情任务,升级后加护甲和武器,所以不需要太多的培养,前期一级就足够了。属性:护甲1级、武器1级、车辆...

12360订票官网下载软件(下载12360订票软件新版本)

应该是12306app怎么订票?首先我们下载一个12306app,然后凭自己的身份证号码和手机号码注册,注册成功之后,然后再登录12306网站,进行人证核验,核验成功之后就可以订票了,首先打开1230...

取消回复欢迎 发表评论: