【图解】C++控制台调用MFC带自定义界面的dll

时间:2024-03-16 22:21:57

※程序在vs2010编译运行

1.使用vs2010新建mfc动态链接库项目,
【图解】C++控制台调用MFC带自定义界面的dll
【图解】C++控制台调用MFC带自定义界面的dll

2.等待项目创建完成后,在资源管理器界面新添加自定义的对话框资源。
【图解】C++控制台调用MFC带自定义界面的dll
【图解】C++控制台调用MFC带自定义界面的dll

3.设好选项后,创建对话框,然后自行进行相关控件的配置。
【图解】C++控制台调用MFC带自定义界面的dll

4.之后在主界面上【右击】【添加类】,并设好类名。
【图解】C++控制台调用MFC带自定义界面的dll

5.在生成的“类名”.cpp文件中添加控件消息(此处指添加了一个button控件做示范)。
【图解】C++控制台调用MFC带自定义界面的dll

6.添加好控件后,在“类名”.h文件中如下设置好导出函数(这里使用标准C接口导出)。
【图解】C++控制台调用MFC带自定义界面的dll

7.之后在资源管理器中找到.def文件,添加要导出的函数名。*
【图解】C++控制台调用MFC带自定义界面的dll
全部设置好后,生成dll。
【图解】C++控制台调用MFC带自定义界面的dll

8.至此dll工程创建完毕,接下来我们再写一个函数加载该dll测试一下。
新建"测试程序.cpp",并写下如下代码加载DLL:

#include <iostream>
#include<Windows.h>
using namespace std;
void main()
{
    typedef void(*FUNA)(void);					//这里对应导出函数的类型与参数。
    HMODULE hmodule = LoadLibrary("testdll");  //需要加载的DLL名称。
    if (hmodule)
    {
        FUNA dll_Func = (FUNA)GetProcAddress(hmodule, TEXT("Func")); //这里写导出函数名。
        if (dll_Func != NULL)
		{
			cout<<"dll加载成功。"<<endl;
			dll_Func();
		}
        else
            cout<<"无法找到DLL"<<endl;
        FreeLibrary(hmodule);			//这里释放DLL。
    }
    else
        cout<<"加载失败!"<<endl;
	system("pause");
}
//测试程序.cpp(这里为了方便我就直接用VC++6.0编译了)

9.编译链接好后,将测试程序与dll放到一起,并测试。

【图解】C++控制台调用MFC带自定义界面的dll

Fin