静动态链接库
文章平均质量分 71
深山里的小白羊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1.静态链接库的生成和使用
1.什么时静态链接库静态库(Static Library)通常包含一堆程序员自定义的变量与函数,在编译期间由编译器和链接器将它集成到可执行文件中,也就是生成的.exe文件中2.静态库的扩展名在Windows下,静态库的扩展名是.lib,在Linux下是.a3.静态库的优缺点1)优点:发布时只需发布.exe文件,因为库已经集成到可执行文件中,运行时不再依赖库2)缺点:...原创 2018-08-09 22:38:18 · 7707 阅读 · 0 评论 -
9.DLL的入口函数DllMain函数
1.dll的入口函数类似程序的入口函数main或者WinMain一样,DLL也有一个入口函数,就是DllMain 2.DllMain函数原型BOOL APIENTRY DllMain( HMODULE hModule, //指向自身的句柄 DWORD ul_reason_for_call, //调用原因...原创 2018-08-31 01:30:38 · 7519 阅读 · 0 评论 -
8.DLL导出C++类
DLL中不仅可以导出函数和变量,也可以导出C++类。只需要在导出类名前关键字class后加上_declspec(dllexport),就可以实现导出类1.DLL简单导出类代码class _declspec(dllexport) Stu{public: Stu(int a); void print();private: int _a;};实例:.c...原创 2018-08-31 00:13:23 · 21871 阅读 · 8 评论 -
7.调用约定_cdecl、_stdcall、_fastcall
1.什么是调用约定调用约定跟堆栈清除密切相关。如果写一个汇编函数,给C/C++调用,在_cdecl方式下,则汇编函数无需清除堆栈,在_stdcall方式下,汇编函数需要在返回(RET)之前恢复堆栈2.常用的调用约定 3.VS编译器的调用约定VS中默认的调用约定是_cdecl方式,Windows API使用_stdcall调用方式,在DLL导出函数中,为了跟Windows API...原创 2018-08-10 22:29:55 · 628 阅读 · 0 评论 -
6.DLL中.def文件的使用
1.DLL导出函数的声明3种方式1)在函数声明中添加_declspec(dllexport)2)采用模块定义文件(.def)声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息3)LINK命令中的/EXPORT规范2.什么是模块定义文件模块定义文件(.def)为链接器提供有关链接程序的导出、属性及其他方面的信息。生成DLL时,.def文件最有用。由于存在可...原创 2018-08-10 21:36:43 · 5838 阅读 · 0 评论 -
5. _declspec(dllexport)与_declspec(dllimport)
1._declspec(dllexport)修饰符将一个函数声明为导出函数,表示这个函数要被包含它的程序之外的程序调用,一般用于DLL中用法:_declspec(dllexport) void fun(int a){ printf("%d\n",a);}2._declspec(dllimport)修饰符声明一个导入函数,是说这个函数是从别的DLL导入,一般使用在使...原创 2018-08-10 20:21:24 · 512 阅读 · 0 评论 -
4. extern "C"用法详解
1.extern关键字extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。与extern对应的关键字是static,被它修饰的全局变量和函数只能在本模块使用实例:1)变量的调用在extern1.cpp中定义一个全局变量:int a = 12;在externMain.cpp中:...原创 2018-08-10 18:53:02 · 1364 阅读 · 4 评论 -
3.利用Win32 API调用DLL
DLL文件的调用有两种方式,第一种方式就是利用.h、.lib和.dll三个文件在项目中调用动态链接库,还有一种方式就是利用Win32的API来对动态链接库进行调用1.利用.h,.lib,.dll实现动态链接库的调用1)编译的时候需要.h文件和.lib文件,运行的时候需要.dll文件.h文件:头文件,包含dll中说明输出的类或符号原型或数据结构的.h文件.lib文件:引入库文件,包含...原创 2018-08-10 16:23:38 · 4797 阅读 · 2 评论 -
2.动态链接库的生成和使用
1.什么是动态链接库动态链接库(Dynamic-Link Library)通常包含程序员自定义的变量和函数,可以在运行时动态链接到可执行文件中2.动态库扩展名Windows下是.dll,Linux下是.so3.Windows系统动态链接库Windows操作系统核心有三个动态链接库(Kernel32.dll、User32.dll、Gdi32.dll),这些动态链接库构成了Win3...原创 2018-08-10 01:41:42 · 16806 阅读 · 1 评论 -
VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别
一种语言的开发环境往往会附带有语言库,这些库就是对操作系统的API的包装,我们也称这些语言库为运行库对于MSVC的运行库(CRT),按照静态/动态链接,可以分为静态版和动态版;按照调试/发布,可以分为调试版本和发布版本;按照单线程/多线程,可以分为单线程版本和多线程版本(但是目前VS中已不提供单线程版本了)在调试模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)...原创 2018-08-29 01:09:08 · 21069 阅读 · 1 评论
分享