MFC学习笔记2018-3-27
1、windows下几种dll(1)、第一种 非MFC的DLL,这是通过DLL形式的win32 project来创建的,这种DLL可以被MFC或者非MFC的程序使用,可以认为是系统级的win32 DLL。当然可以在这种DLL加入MFC的头文件在内部使用MFC的类。
(2)、第二种 MFC规则DLL,通过MFC DLL模板里选中regular DLL来创建,这种DLL会定义一个派生自CWinApp的类,由这个类的InitInstance()完成DLL的初始化,内部提供DllMain函数,这种DLL可以是动态链接也可以是静态链接到主程序,其输出函数可以被所有win32的程序使用。
(3)、第三种 MFC扩展DLL,通过MFC DLL模板里选中extension DLL来创建,主要用于输出可以被MFC程序可以使用的类,它没有一个从CWinApp继承的类,入口函数形如:
2、MFC动态调用dll接口
HINSTANCE hDll = AfxLoadLibrary(_T("DumpRecord.dll"));
if (NULL == hDll)
{
AfxMessageBox(_T("DUMP模块动态加载失败"));
return 0;
}
typedef void(*funcRunCrashHandler)(void);
funcRunCrashHandler RunCrashHandler = (funcRunCrashHandler)GetProcAddress(hDll, "RunCrashHandler");
if (RunCrashHandler != NULL)
{
RunCrashHandler();
}
else
{
AfxMessageBox(_T("DUMP模块启动失败"));
AfxFreeLibrary(hDll);
return 0;
}
。。。。
AfxFreeLibrary(hDll);
页:
[1]