windows DLL动态连接库文件的实现和应用
来源:互联网 发布:手机淘宝货到付款骗局 编辑:程序博客网 时间:2024/05/29 08:27
windows DLL动态连接库文件的实现和应用
动态连接库文件即dll文件(windows下,linux下为.so文件),里面其实为已经实现的函数库,可以随时导入为多个程序同时使用。它实现时就被编译了,所以它实质是一种不可执行的二进制文件 。利用它有助于共享内存,提高内存的执行效率 , 而且dll也使程序模块化,这也是虚拟内存实现的前提。
vc++6.0提供了两种模式的dll文件的编写,一种是MFC的dll,一种是win32的dll.对于MFC的dll稍微复杂,本人不会。这儿就简单的说说怎么写win32 的dll和如何导出并加载到自己的程序中。
过程:
1.如何编写win32 的动态链接库文件。
其实代码就和编写c语言的一样,头文件申明,.c文件实现。不同的是,dll不需要我们编写程序的入口,即main函数,因为编译器已经为我们实现了。所以也就像我们在自己的头文件和.c文件增添一个函数。
例如:判断两个整形的大小的函数(谁都会写):
头文件:
添加这句:extern “C”_declspec(dllexport) int Max(int a , int b);
这句中关键字:_declspec()即函数引出规范,即导出自己编写的dll文件后边声明的函数。后边写上自己声明的函数。
编译之后就去自己的工程目录下的Debug下找到以下三个文件:
以我的Mydll2为例子:
Mydll2.dll,Mydll2.lib , Mydll2.h这三个文件。有了这三个文件,你才能使用动态链接库里面的函数。
一个是引入库(.lib)文件,一个是dll文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据!
lib文件是应用程序编译时用到,dll里面是实现,是在程序运行时运用。
2.使用生成的三个文件。
(1)将.h和.lib文件加到vc的头文件库和资源库
如果你不想移动这两个文件,那么就打开vc菜单栏Tools/options/dirctories(路径)下将你的头文件和.lib绝对目录添加进去就可以了。
当然,你如果觉得麻烦,就直接去找到你的vc编译环境的include文件夹和lib文件夹,将你的文件放进去就可以了。
(2)第四部就是在你的程序中添加这样一句,也就是加载你的动态链接库文件,这样你终于可以用里面的函数,就不用自己写了。所以发现动态链接库真的非常方便。
pragma comment(lib , “你的lib文件”)
如下我的代码,用到了我刚才写的dll文件中的函数.
结果:
- windows DLL动态连接库文件的实现和应用
- windows环境下动态库的生成和使用 (.dll文件) .
- 【Windows】 静态链接库和动态链接库,DLL的静态加载和动态加载,两种LIB文件。
- 简单dll动态链接库的建立和应用
- DLL(动态连接库)创建和使用
- 动态加载Silverlight应用的dll文件(可实现插件功能)
- .DLL 动态连接库
- DLL动态连接库
- 动态连接库dll
- DLL(动态连接库)
- MFC动态库的生成文件lib和.dll讨论
- 动态链接库dll和lib文件的生成
- MFC的动态连接库DLL
- 动态连接库(DLL)的基础知识
- 动态连接库DLL 和 静态连接库LIB
- 动态连接库DLL和静态连接库lib的区别小记
- DLL头文件的格式和应用
- DLL头文件的格式和应用
- jdk配置正确但是tomcat服务器启动时一闪而过
- 从Java回调机制分析Android动态加载布局过程中出现的IllgalStateException
- socat的安装与使用
- What happens when you run a container?
- 安卓程序运行中突然崩溃的时候打印日志到本地
- windows DLL动态连接库文件的实现和应用
- 基于 intel MKL 的对称矩阵特征值求解器
- 《java从入门到精通》-笔记
- linux 设置用户id
- 了解Java中的线程
- 圆形图片CircleImageView
- Tomcat域名或IP地址访问方式配置方法
- gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
- Handler的基本用法