c++ Lib Dll及相关头文件关系和怎么操作
2013-03-05 21:41
453 查看
一、动态库大体使用过程:
(1)DLL中导出类、函数、对象
1. 创建一个空的Win32 Dynamic-Link Library项目Test
2. 在项目中添加一个Test.h头文件,该文件的内容如下:
//导出类
class __declspec(dllexport) CTest
{
...
};
//导出函数
__declspec(dllexport) void FuncTest();
//导出对象
extern __declspec(dllexport) CTest ObjTest;
这段代码中通过__declspec(dllexport)导出了类CTest、函数FuncTest和对象ObjTest。在.cpp文件中实现上面的声明与类的定义后,经编译就可以生成一个.dll和.lib文件了。
(2)静态加载DLL
1. 新建一个Win32 项目。
2. 将上面编译生成的.lib文件复制到,该项目下。
3. 在项目中添加一个Test.h(通过该文件实现对DLL的静态加载),该.h文件的内容主要是从DLL的.h文件中复制过来。具体内容如下:
#pragma comment(lib, "test.lib")
//导入类
class __declspec(dllimport) CTest
...{
...
};
//导入函数
__declspec(dllimport) void FuncTest();
//导入对象
extern __declspec(dllimport) CTest ObjTest;
这个.h文件与dll的.h的不同就是,在开头加了#pragma comment(lib, "test.lib"),以及类、函数、对象前面的__declspec(dllexport)变成了__declspec(dllimport) 。通过这些修改就可以告诉编译器,这个.h文件中定义的类、声明的函数和对象都是从test.dll中导入的。在项目中完成对这些类、函数、对象的调用代码后,就可以将其编译成可执行文件。将生成的可执行为文件、以及上面生成的. dll文件复制到同一个文件夹中就可以正常运行这个可执行文件。
(1)DLL中导出类、函数、对象
1. 创建一个空的Win32 Dynamic-Link Library项目Test
2. 在项目中添加一个Test.h头文件,该文件的内容如下:
//导出类
class __declspec(dllexport) CTest
{
...
};
//导出函数
__declspec(dllexport) void FuncTest();
//导出对象
extern __declspec(dllexport) CTest ObjTest;
这段代码中通过__declspec(dllexport)导出了类CTest、函数FuncTest和对象ObjTest。在.cpp文件中实现上面的声明与类的定义后,经编译就可以生成一个.dll和.lib文件了。
(2)静态加载DLL
1. 新建一个Win32 项目。
2. 将上面编译生成的.lib文件复制到,该项目下。
3. 在项目中添加一个Test.h(通过该文件实现对DLL的静态加载),该.h文件的内容主要是从DLL的.h文件中复制过来。具体内容如下:
#pragma comment(lib, "test.lib")
//导入类
class __declspec(dllimport) CTest
...{
...
};
//导入函数
__declspec(dllimport) void FuncTest();
//导入对象
extern __declspec(dllimport) CTest ObjTest;
这个.h文件与dll的.h的不同就是,在开头加了#pragma comment(lib, "test.lib"),以及类、函数、对象前面的__declspec(dllexport)变成了__declspec(dllimport) 。通过这些修改就可以告诉编译器,这个.h文件中定义的类、声明的函数和对象都是从test.dll中导入的。在项目中完成对这些类、函数、对象的调用代码后,就可以将其编译成可执行文件。将生成的可执行为文件、以及上面生成的. dll文件复制到同一个文件夹中就可以正常运行这个可执行文件。
相关文章推荐
- C++ 文件路径操作相关函数、获取dll所在的路径
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Qt学习之路_8(Qt中与文件目录相关操作)
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
- EditPlus最新汉化绿色版的下载、破解,以及开发java文件时的一些相关设置操作视频
- DllMain中不当操作导致死锁问题的分析--加载卸载DLL与DllMain死锁的关系
- Spring 的优秀工具类盘点,第 1 部分: 文件资源操作和 Web 相关工具类
- 转 文件路径相关的字符串操作
- Android入门之文件系统操作(二)文件操作相关指令
- java 操作文件相关技术
- python3 文件相关操作
- Linux命令学习笔记:1、文件的相关操作
- 文件相关操作
- 如果EDIUS中打不开文件该怎么操作
- php文件操作相关类实例
- Linux下文件的相关操作函数
- linux文件管理相关操作
- php中访问文件或文件夹相关操作
- C#文件操作常用相关类(Directory类、File类、Path类)
- php学习笔记(九)文件相关的处理操作