用VC编制DLL程序的方法小结

液压机械/部件2020年06月23日

以下是一个编制DLL的程序示例。为此,应先建立一个名为TestDll应用主程序,再创建一个DLL应用,作为主工程的子工程,并在主工程中调用DLL。通过MFC AppWizard创建一个对话框程序,在其中添加一个命令按钮(名称为"调用DLL程序")“我打了第一次的中国赛,其程序运行后的界面如图三。点击按钮后就去调用DLL程序。以下介绍该DLL程序的编制。

图三

如图一和图二所示,通过MFC AppWizard(dll)输入DLL程序的名称"DLL"后点击"Finish"按钮生成一个DLL程序的基本结构,其中在运行到图二界面时,我们可以选择第一项按钮"Regular DLL with MFC statically linked" 生成常规静态DLL,也可以选择第二项按钮"Regular DLL using shared MFC DLL"生成常规动态DLL,后者的体积远远小于前者。现在的任务是在运行DLL时弹出一个显示"This is My DLL"字样的对话框,点击"确定"后返回调用程序。为此,需要在DLL工程中插入一个对话框资源(该对话框类名为CMyDlg),在p程序开头输入以下代码:

#include "MyDlg.h"

在p程序最后一行代码"CDLLApp theApp;"后面输入以下代码:

extern "C" _declspec(dllexport) int MyTest()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

CMyDlg dlg;

Modal();

return 0;

}

对DLL编译后生成l程序。

然后,进入主程序TestDll,利用ClassWizard对命令按钮代码段添加下列代码:

void CTestDlg::OnButton1()

{

// TODO: Add your control notification handler code here

typedef int(_cdecl *Connect)();

HINSTANCE hinstDLL=NULL;

hinstDLL=LoadLibrary("l");

if (hinstDLL)

{

Connect Proc;

Proc = (Connect)GetProcAddress(hinstDLL,"MyTest");

int iTemp = Proc();

FreeLibrary(hinstDLL);

}

else

{

AfxMessageBox("Not found dll !");

}

}

为了让TestDll能够调用l程序,需要让前者能够"看见" DLL程序。一个Windows程序定位DLL的次序是, 1.包含EXE文件的目录,2.进程的当前工作目录, 3.Windows系统目录且无需对软件进行维护, 4.Windows目录,5.列在Path环境变量中的一系列目录。为此,需要将l放到上述相关目录中,这样执行主程序TestDll,点击命令按钮就显示以下DLL运行结果,见图四。

图四

查看本文来源

黄冈白癜风医院
濮阳哪家医院治疗白癜风
心肌缺血严重
相关阅读
对付小人,该学会这3招,既省心又有效,小人再也不敢造次!

俗话知道,明枪易躲暗箭难防, 在职场上面,不不让人家公然 给我们耍用心...

2023-09-27
自己烙饼总是发硬?记住4点,柔软筋道,酥脆多层次多,放凉也不硬

自己疤点心显然发硬?记下4点,柔较很厚筋道,新近鲜内涵多,放凉也不硬...

2023-09-23
咬舌自尽,吞金自杀,赏赐灌醉……武侠小说中的这些情节靠谱吗?

大家看一些明清章回小时说,或者时说是一些时装剧武侠剧的时候,常才会才...

2023-09-14
一天三个瓜,朱小伟离婚半年又订婚,张杰说是直播间可以送礼物

1.朱小伟,这个人有效吗?陈亚楠的妻子解除婚约不到一年,半年后又订婚了...

2023-09-11
上海统筹设置常态化采样点:固定 +便民+流出

北京将依托市大数据中心提供者的新科技游戏平台,根据“跨国公司白名单”...

2023-09-10
职场人说话之道 “三不三要”。让管理不难认真,助你工作锦上添花

与世隔绝和求职从来都是水乳交融,互为阴阳开始运行共筑我们的繁华人生。...

2023-09-08
友情链接