Windows开发——DLL 文件导出和使用
动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。
.c/.cpp 分别表示c语言和c++导出的dll文件方式。
一、.c导出给.c使用:
******************dll文件的头文件*******************
_declspec(dllexport) int add1(int a, int b);_declspec(dllexport) double add2(double a, double b);_declspec(dllexport) int add3(char* str1,int size, char* str2);
********************测试项目-使用文件(静态)***********************
#pragma comment(lib,"Calculater.lib")
********************测试项目-使用文件(动态)**********************
typedef int (*add1)(int a, int b);typedef double (*add2)(double a, double b);typedef int (*add3)(char *str, int len,char *st2 );HMODULE hMoudle = GetModuleHandle("Calculater.dll");hMoudle = LoadLibrary("Calculater.dll");add1 fn1 = (add1)GetProcAddress(hMoudle, "add1");int a1 = 10;int b1 = 20;printf("add1 : %d\n", fn1(a1, b1));add2 fn2 = (add2)GetProcAddress(hMoudle, "add2");add3 fn3 = (add3)GetProcAddress(hMoudle, "add3");//FreeLibrary(hMoudle);
***********************************************************************
动态相比静态只是不需要加载.lib文件。
静态:.lib 、.dll
动态:.dll、API 添加lib文件。
***********************************************************************
二、.c导出给.cpp使用:
******************dll文件的头文件*******************
extern "C"{_declspec(dllexport) int add1(int a, int b);_declspec(dllexport) double add2(double a, double b);_declspec(dllexport) int add3(char* str1, int size, char* str2);}
***********************测试项目-使用文件**************************
没问题
三、.cpp导出给.cpp使用
静态无问题✔
动态需要调整✖
只需要在调用函数名出添加参数。
add1 fn1 = (add1)GetProcAddress(hMoudle, "?add1@@YAHHH@Z");
即可。原因:c++导出的dll文件是带有一个参数的,缺少参数编译器无法找到。
四、导出dll类
类前添加关键字即可:
class __declspec(dllexport) Student {};
五、__cdecl和__stdcall区别
__cdecl使用对函数名无影响
__stdcall有影响
用在函数声明 类型之后 函数名之前
Windows开发——DLL 文件导出和使用相关推荐
- dll文件导出对应的lib文件
在Windows平台上使用MSYS编译一些开源代码时经常只会生成DLL文件,而如果打算在VS中使用该DLL则需要有对应的LIB文件,下面以编译oRtp为例来看看如何从DLL文件中导出LIB文件. 需要 ...
- Windows的.DLL文件详解
什么是DDL 大家都知道.exe文件的作用,当我们想打开游戏,却又在桌面找不到快捷图标,都会自己去到游戏文件夹里找一个exe文件,通常点开它,就可以打开游戏尽情的玩了.通常,我们都可以很快的在众多文件 ...
- UG NX二次开发(C#)-文件-导出图像
1 前言 在UG NX中,可以通过交互操作导出模型的图像,这个是比较简单的,本文介绍下如何采用NXOpen(C#)来导出图像. 2 在UG NX打开下的操作 在UG NX图形界面已经打开的情况下,通过 ...
- windows缺少dll文件检测dll文件
解决方法: win + r打开运行 运行里输入CMD确定 在命令行窗口下输入以下内容后按回车 for %1 in (%windir%system32.ocx) do regsvr32 s %1 完成之 ...
- Window删除dll文件时提示“操作无法完成,因为文件已在Windows 资源管理器中打开”
问题描述 Windows删除dll文件时提示"操作无法完成,因为文件已在Windows 资源管理器中打开". 但是在资源管理器里面找不到这个进程,此时可以使用CMD的tasklis ...
- 使用vs2008制作dll文件,生成动态链接库
转自:http://blog.csdn.net/howard_liu1314/article/details/7862326 1.制作dll文件 vs2008中,File > New P ...
- WINDOS 的DLL文件原理
Windows中DLL文件基本原理及修改方法 这是一个盗取QQ帐号密码的木马病毒,特点是可以通过可移动磁盘传播.该病毒的主要危害是盗取QQ帐户和密码:该病毒还会结束大量反病毒软件,降低系统的安全等级. ...
- python dll文件丢失_python34.dll
python34.dll文件下载,解决找不到python34.dll的问题 python34.dll控件常规安装方法(仅供参考): 一.如果在运行某软件或编译程序时提示缺少.找不到python34.d ...
- 计算机丢失dog.dll,dog.dll(解决找不到dog.dll文件问题)V1.0 正式版
dog.dll(解决找不到dog.dll文件问题)是一款很好用的针对dog.dll文件的修复工具.使用电脑时遇到dog.dll文件丢失怎么办?不用担心,小编带来的这款dog.dll文件修复工具可以帮助 ...
- mysql的dll文件_qsqlmysql.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
如何选择&使用 第一步:您从我们网站下载下来文件之后,先将其解压(一般都是zip压缩包). 第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑. 如果您不知 ...
最新文章
- SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP-
- 新看了两件家具请朋友们给点意见
- 【python3的学习之路七】函数
- The build tools for v141 (Platform Toolset = 'v141') cannot be found
- Linux系统颜色默认表示的文件类型
- Weka的-3.6.10的C4.5与Quinlan教授的C4.5算法的区别
- qt中如何模拟按钮点击_qt – 在Windows中模拟鼠标按钮单击
- linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)
- java junit 怎么写_使用JUnit测试java代码
- WPF中DataGrid的使用实例
- [Aaronyang] 写给自己的WPF4.5 笔记10[层次数据需求处理,TreeView绿色文章1/4]
- html前端登录界面示例
- 京东数据化运营(四)— 客单价篇
- 集合多种功能的转录调控数据库:hTFtarget,介绍及使用教程
- excel 简单制作数据透视表
- Allegro_Outline,RouteKeepin倒圆角
- 动态爱心和3D旋转烟花代码
- 3. LaTeX图片的排版、引用与格式
- 严禁使用计算机存储,处理,传输涉密信息,严禁使用非涉密计算机存储、处理、传输涉密信息。()...
- 全网都在讲迁移学习,可你会写代码了吗?收藏我这个,10分钟开始你的迁移学习训练
热门文章
- html pt兼容,FCKEditor,一个HTML可视化编辑器,兼容很好
- python语法使用方法_Python语法基础
- 计算机制作贺卡教案,制作贺卡教案
- java 先进先出 集合_Java中的集合Queue、LinkedList、PriorityQueue(四)
- JavaScript:对象转换为字符串、字符串转换为对象
- java mybatis缓存机制_mybatis缓存机制与陷阱
- lan pci 联想开机_我的联想电脑开机老显示DHCP
- 2020中国年度AI评选结果揭晓!领航企业、商业人物、创新产品……AI落地最佳参考就在这里
- 域对抗网络Domain adversarial neural network及其应用相关论文
- LapStyle - 基于拉普拉斯金字塔的高质量风格化方法 | CVPR2021