WEB开发网
开发学院软件开发VC 在DLL中使用资源 阅读

在DLL中使用资源

 2009-10-06 20:29:53 来源:WEB开发网   
核心提示:1、静态链接到MFC的DLL静态链接到MFC的规则DLL与MFC库静态链接,则此时MFC库不能共享,在DLL中使用资源(3),所以MFC总是使用它所链接的DLL的模块状态,这样也就不存在管理模块状态的问题,5)编译生成DLLShared.dll和DLLShared.lib,继续使用上面的Use工程,但使用这种方法的缺点

1、静态链接到MFC的DLL

静态链接到MFC的规则DLL与MFC库静态链接,则此时MFC库不能共享,所以MFC总是使用它所链接的DLL的模块状态。这样也就不存在管理模块状态的问题。但使用这种方法的缺点是DLL程序将会变大,而且会在程序中留下重复代码。下面给出的例子验证了这一点。本例可以按照以下步骤来完成:

1)在VC菜单中File->New新建一个命名为DLLStatic的MFC AppWizard的工程,下一步选择Regular DLL with MFC statically linked。

2)在工程中添加一个对话框资源,其ID为:IDD_ABOUTBOX。并在resource.h之中将IDD_ABOUTBOX 的数值改为100。

3)在DLLStatic.cpp中定义如下函数:

void ShowDlg()
{
   CDialog dlg(IDD_ABOUTBOX);
   dlg.DoModal();
}

4)在DLLStatic.def文件中的EXPORTS语句中添加一行:ShowDlg,以导出ShowDlg函数。

5)编译生成DLLStatic.dll和DLLStatic.lib。

继续使用上一节中的Use工程,将前面生成的DLLStatic.dll和DLLStatic.lib两个文件复制到工程的Debug目录内,并将

extern "C" __declspec(dllexport) void ShowDlg();

#pragma comment(lib,"debug/UseDlg")

这两行改为:

void ShowDlg();

#pragma comment(lib,"debug/DLLStatic")

编译并运行Use.exe。点击按钮,可以看到DLLStatic中的模态对话框弹出。

本例中,可以注意到DLL中所定义的About对话框资源与EXE中所定义的About对话框资源ID完全相同,但是当我们点击Use.exe上面的按钮时,弹出的是DLL中的模态对话框。说明,当使用静态链接到MFC的规则DLL时,不存在管理模块状态的问题。

2、动态链接到MFC的DLL

在讨论关于动态链接到MFC的DLL的模块状态问题之前,先来看一个例子。本例可以通过如下步骤来完成:

1)在VC菜单中File->New新建一个命名为DLLShared的MFC AppWizard的工程,下一步选择Regular DLL using shared MFC DLL。

2)在工程中添加一个对话框资源,其ID为:IDD_ABOUTBOX。并在resource.h之中将IDD_ABOUTBOX 的数值改为100。

3)在DLLShared.cpp中定义如下函数:

void ShowDlg()
{
   CDialog dlg(IDD_ABOUTBOX);
   dlg.DoModal();
}

4)在DLLShared.def文件中的EXPORTS语句中添加一行:ShowDlg,以导出ShowDlg函数。

5)编译生成DLLShared.dll和DLLShared.lib。

继续使用上面的Use工程,将前面生成的DLLShared.dll和DLLShared.lib两个文件复制到工程的Debug目录内,并将

extern "C" __declspec(dllexport) void ShowDlg();

#pragma comment(lib,"debug/DLLStatic")

这两行改为:

void ShowDlg();

#pragma comment(lib,"debug/DLLShared")

上一页  1 2 3 4 5  下一页

Tags:DLL 使用 资源

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接