动态链接库英文为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 文件导出和使用相关推荐

  1. dll文件导出对应的lib文件

    在Windows平台上使用MSYS编译一些开源代码时经常只会生成DLL文件,而如果打算在VS中使用该DLL则需要有对应的LIB文件,下面以编译oRtp为例来看看如何从DLL文件中导出LIB文件. 需要 ...

  2. Windows的.DLL文件详解

    什么是DDL 大家都知道.exe文件的作用,当我们想打开游戏,却又在桌面找不到快捷图标,都会自己去到游戏文件夹里找一个exe文件,通常点开它,就可以打开游戏尽情的玩了.通常,我们都可以很快的在众多文件 ...

  3. UG NX二次开发(C#)-文件-导出图像

    1 前言 在UG NX中,可以通过交互操作导出模型的图像,这个是比较简单的,本文介绍下如何采用NXOpen(C#)来导出图像. 2 在UG NX打开下的操作 在UG NX图形界面已经打开的情况下,通过 ...

  4. windows缺少dll文件检测dll文件

    解决方法: win + r打开运行 运行里输入CMD确定 在命令行窗口下输入以下内容后按回车 for %1 in (%windir%system32.ocx) do regsvr32 s %1 完成之 ...

  5. Window删除dll文件时提示“操作无法完成,因为文件已在Windows 资源管理器中打开”

    问题描述 Windows删除dll文件时提示"操作无法完成,因为文件已在Windows 资源管理器中打开". 但是在资源管理器里面找不到这个进程,此时可以使用CMD的tasklis ...

  6. 使用vs2008制作dll文件,生成动态链接库

    转自:http://blog.csdn.net/howard_liu1314/article/details/7862326 1.制作dll文件     vs2008中,File > New P ...

  7. WINDOS 的DLL文件原理

    Windows中DLL文件基本原理及修改方法 这是一个盗取QQ帐号密码的木马病毒,特点是可以通过可移动磁盘传播.该病毒的主要危害是盗取QQ帐户和密码:该病毒还会结束大量反病毒软件,降低系统的安全等级. ...

  8. python dll文件丢失_python34.dll

    python34.dll文件下载,解决找不到python34.dll的问题 python34.dll控件常规安装方法(仅供参考): 一.如果在运行某软件或编译程序时提示缺少.找不到python34.d ...

  9. 计算机丢失dog.dll,dog.dll(解决找不到dog.dll文件问题)V1.0 正式版

    dog.dll(解决找不到dog.dll文件问题)是一款很好用的针对dog.dll文件的修复工具.使用电脑时遇到dog.dll文件丢失怎么办?不用担心,小编带来的这款dog.dll文件修复工具可以帮助 ...

  10. mysql的dll文件_qsqlmysql.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家

    如何选择&使用 第一步:您从我们网站下载下来文件之后,先将其解压(一般都是zip压缩包). 第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑. 如果您不知 ...

最新文章

  1. SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP-
  2. 新看了两件家具请朋友们给点意见
  3. 【python3的学习之路七】函数
  4. The build tools for v141 (Platform Toolset = 'v141') cannot be found
  5. Linux系统颜色默认表示的文件类型
  6. Weka的-3.6.10的C4.5与Quinlan教授的C4.5算法的区别
  7. qt中如何模拟按钮点击_qt – 在Windows中模拟鼠标按钮单击
  8. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)
  9. java junit 怎么写_使用JUnit测试java代码
  10. WPF中DataGrid的使用实例
  11. [Aaronyang] 写给自己的WPF4.5 笔记10[层次数据需求处理,TreeView绿色文章1/4]
  12. html前端登录界面示例
  13. 京东数据化运营(四)— 客单价篇
  14. 集合多种功能的转录调控数据库:hTFtarget,介绍及使用教程
  15. excel 简单制作数据透视表
  16. Allegro_Outline,RouteKeepin倒圆角
  17. 动态爱心和3D旋转烟花代码
  18. 3. LaTeX图片的排版、引用与格式
  19. 严禁使用计算机存储,处理,传输涉密信息,严禁使用非涉密计算机存储、处理、传输涉密信息。()...
  20. 全网都在讲迁移学习,可你会写代码了吗?收藏我这个,10分钟开始你的迁移学习训练

热门文章

  1. html pt兼容,FCKEditor,一个HTML可视化编辑器,兼容很好
  2. python语法使用方法_Python语法基础
  3. 计算机制作贺卡教案,制作贺卡教案
  4. java 先进先出 集合_Java中的集合Queue、LinkedList、PriorityQueue(四)
  5. JavaScript:对象转换为字符串、字符串转换为对象
  6. java mybatis缓存机制_mybatis缓存机制与陷阱
  7. lan pci 联想开机_我的联想电脑开机老显示DHCP
  8. 2020中国年度AI评选结果揭晓!领航企业、商业人物、创新产品……AI落地最佳参考就在这里
  9. 域对抗网络Domain adversarial neural network及其应用相关论文
  10. LapStyle - 基于拉普拉斯金字塔的高质量风格化方法 | CVPR2021