DLL的创建导出和加载
Posted sheenagh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DLL的创建导出和加载相关的知识,希望对你有一定的参考价值。
一、创建DLL项目
打开VS2008,点击File——>New——>Project——>Visual C++——>Win32 Console Application,填入工程名称,下一步,选择Application Type为DLL,Additional options为Empty project。
添加cpp文件和h文件,实现DLL需求的功能。、
点击生成解决方案,可在对应目录下看到生成的lib和dll文件。
二、DLL的函数导出和加载
DLL导出有两种方式:__declspec(dllexport)和.def文件。c++加载DLL也有两种方式(静态链接和动态链接)。
1、用__declspec(dllexport)导出函数
#ifdef XXX_EXPORTS
#define XXX_API __declspec(dllexport)
#else
#define XXX_API __declspec(dllimport)
#endif
extern "C" BOOL XXX_API XXX(函数参数列表);
2、用.def导出函数
LIBRARY "xxx"(DLL的名称)
EXPORTS
xxx(要导出的函数名)
3、静态链接
#pragma comment(lib,"xxx.lib")
4、动态链接
typedef BOOL (*XXXFun)(参数列表);
加载:
HMODULE hModule = LoadLibrary(_T("XXX.dll"));
if(NULL != hModule)
{
XXXFun funCreateObject = (XXXFun)GetProcAddress(hModule,"CreateObject");
if(funCreateObject != NULL)
{
...
}
}
else
{
perror("funCreateObject失败");
FreeLibrary(hModule);
}
静态链接的时候不关心函数的导出函数名字,只有动态链接的时候才会关心函数的导出名字。调用函数的时候一定要注意调用约定,不然会导致程序崩溃。
三、DLL的使用
创建一个新的Win32控制台项目或其他,设置C/C++和Linker相关项。
以上是关于DLL的创建导出和加载的主要内容,如果未能解决你的问题,请参考以下文章