vs 2008 mfc 编写资源dll
来源:互联网 发布:javascript submit 编辑:程序博客网 时间:2024/05/16 23:48
网上找了几个例子,说的都不够清晰,干脆自己动手写一个,整理出来留给后来人借阅
首先文件->新建->项目,选中mfc->mfc dll,名字zydll,直接点击完成,创建一个(在共享DLL中使用mfc)的dll
起初我选择在静态库中使用,频繁提示错误,干脆修改成共享dll,问题解决。我们继续
切换到资源标签,添加资源->string table 点击新建,修改标题为test,修改值为2000
接着右键->添加资源->导入->图片资源
这里重头戏即将开始
工程上右键->属性->连接器->无入口点选择(是/NOENTRY)
修改随机基址为:禁止映像随机化(/DYNAMICBASE:NO)
修改数据执行保护(DEP)为默认值
点击确定,现在就可以编译dll了
1>------ 已启动全部重新生成: 项目: zydll, 配置: Debug Win32 ------1>正在删除项目“zydll”(配置“Debug|Win32”)的中间文件和输出文件1>正在编译...1>stdafx.cpp1>正在编译...1>zydll.cpp1>正在编译资源...1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.11>Copyright (C) Microsoft Corporation. All rights reserved.1>正在编译资源清单...1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.11>Copyright (C) Microsoft Corporation. All rights reserved.1>正在链接...1> 正在创建库 C:\VC\VS9\zydll\Debug\zydll.lib 和对象 C:\VC\VS9\zydll\Debug\zydll.exp1>atlsd.lib(Externs.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>mfcs90ud.lib(dllmodul.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>atlsd.lib(atltrace.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>zydll.obj : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>stdafx.obj : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>mfcs90ud.lib(nolib.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>mfcs90ud.lib(dllmodul.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>mfcs90ud.lib(stdafx.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符1>正在嵌入清单...1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.11>Copyright (C) Microsoft Corporation. All rights reserved.1>生成日志保存在“file://c:\VC\VS9\zydll\Debug\BuildLog.htm”1>zydll - 0 个错误,8 个警告========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
会出现一坨警告,不用理会它们
调用资源dll方法
新建一个disable工程,工程名为testdll
在对话框上添加一个Picture Control控件,修改ID号为IDC_TESTZYDLL
并修改type为Bitmap
在Oninitdialog函数中编写代码
HMODULE hModule = LoadLibrary("zydll.dll");if (hModule == NULL){MessageBox("加载资源文件失败!");return true;}char buffer[255];memset(buffer,0,sizeof(buffer));LoadString(hModule,2000,buffer,sizeof(buffer));HBITMAP hBitmap = LoadBitmap(hModule,MAKEINTRESOURCE(2001));if (hBitmap == NULL){ MessageBox("加载图片资源失败!");return true;}((CStatic*)GetDlgItem(IDC_TESTZYDLL))->SetBitmap(hBitmap);FreeLibrary(hModule);
编译执行,图片就被加载成功鸟~~
0 0
- vs 2008 mfc 编写资源dll
- VS编写Dll
- vs编写dll
- VS编写DLL
- 编写纯资源Dll
- VS 2005下编写及测试智能设备的非MFC的DLL
- MFC Extension dll VS Regular Dll
- DLL编写+MFC调用程序
- 非MFC dll编写方法
- 纯资源DLL的编写
- 编写、引用资源DLL步骤
- 纯资源DLL的编写
- 纯资源DLL的编写
- MFC DLL资源动态切换
- MFC DLL资源动态切换
- MFC DLL资源动态切换
- MFC加载纯资源DLL
- mfc dll封装对话框资源
- iOS--字符编码,NSString和UTF-8间的转换
- openGL es2.0 创建纹理灯光球
- java common-fileupload实现上传多个文件,在同一个input框中实现
- poj 3279 Filptile (USACO 2007 Open Silver)
- 最小二乘法
- vs 2008 mfc 编写资源dll
- Ruby on rails argument out of range错误
- 年轻时就应该要懂得这些道理
- jsp中文件路径的几种形式
- 源码阅读与分析一:利用eclipse查看ssh等源码
- 明白机会成本太迟了.........
- 嵌入式工程是的要求
- 工作效率有感
- 黑马程序员——Objective-C学习笔记(六):内存管理