动态链接库的创建和调用

动态链接库的创建和调用,第1张

动态链接库的创建和调用,第2张

创建动态连接库的步骤:

1.创建非MFC DLL动态链接库

1.打开文件->新建->项目选项,选择win32动态链接库->示例项目->项目名称:DllDemo。

2.创建新的。h文件DllDemo.h

#ifdef DllDemo_EXPORTS

# define dll API _ _ declspec(dll export)

#否则

# define dll API _ _ declspec(dllimport)

extern " c "//按原样编译

{

DllAPI int __stdcall Max(int a,int b);//__stdcall启用非C/C++语言中的API调用。

}

#endif

3.将DllDemo.h文件导入到DllDemo.cpp文件中,实现Max(int,int)函数。

#包含" DllDemo.h "

DllAPI int __stdcall Max(int a,int b)

{
if(a==b)
返回NULL
else if(a÷b)
返回a;
else
return b;
}

4.编译程序生成动态链接库。

第二,用DllDemo.dll创建动态链接库。def文件。

1.删除DllDemo项目中的DllDemo.h文件。

2.在DllDemo.cpp文件的开头,删除# include dllddemo.h语句。

3.向项目中添加一个文本文件,将其命名为DllDemo.def,并编写以下语句:

库MyDll
EXPORTS
Max@1

4.编译程序生成动态链接库。

链接的动态调用步骤:

1.隐式调用

1.建立DllCnslTest项目

2.将文件DllDemo.lib和DllDemo.lib复制到DllCnslTest项目所在的目录中。

3.在DllCnslTest.h中添加以下语句:

# define dll API _ _ declspec(dllimport)

#pragma comment(lib," dllddemo.lib ")//链接编辑器时,链接到dllddemo . lib文件。

外部“C”

{

DllAPI int __stdcall Max(int a,int b);

}

4.在DllCnslTest.cpp文件中添加以下语句:

# include " dll cntest . h "//或# include "dllddemo.h "

void main()
{
int value;
value = Max(2,9);
printf("最大值为%d\n ",value);
}

5.编译并生成应用程序DllCnslTest.exe。

第二,显式调用

1.建立DllWinTest项目

2.将文件DllDemo.dll复制到DllWinTest项目所在的目录或Windows系统目录下。

3.用vc/bin下的Dumpbin.exe小程序检查DLL文件(DllDemo.dll)中的函数结构。

4.使用类型定义关键字typedef定义指向与DLL中相同的函数原型的指针。

示例:

typedef int(*lpMax)(int a,int b);//此语句可以放在。h文件

5.通过LoadLibray()将DLL加载到当前应用程序中,并返回当前DLL文件的句柄。

示例:

HINSTANCE hDll//声明一个Dll实例文件句柄

hDll = LoadLibrary(" dll demo . dll ");//导入DllDemo.dll动态连接库

6.通过GetProcAddress()函数获取导入到应用程序中的函数指针。

示例:

lpMax Max
Max =(LP Max)GetProcAddress(hDLL," Max ");
int值;
value = Max(2,9);
printf("最大值为%d ",value);

7.调用该函数后,使用FreeLibrary()卸载DLL文件。

免费图书馆(hDll);

8.编译并生成应用程序DllWinTest.exe。

注意:显式链接的应用程序在编译时不需要使用相应的Lib文件。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 动态链接库的创建和调用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情