社区
界面
帖子详情
动态链接库解决资源问题???请教
leizy800
2005-07-29 02:06:02
老大要我在原来的工程上添加了一个功能,带有对话框的,要求我把资源独立出来,作成 dll,我不会,万分火急,各位教教我吧。。。说说具体的过程,最好有例子
...全文
70
3
打赏
收藏
动态链接库解决资源问题???请教
老大要我在原来的工程上添加了一个功能,带有对话框的,要求我把资源独立出来,作成 dll,我不会,万分火急,各位教教我吧。。。说说具体的过程,最好有例子
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AntonlioX
2005-07-29
打赏
举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_create_a_resource.2d.only_dll.asp
Visual C++ 概念:添加功能
创建纯资源 DLL
纯资源 DLL 是仅包含资源(如图标、位图、字符串和对话框)的 DLL。使用纯资源 DLL 是在多个程序之间共享同一组资源的好方法。提供其资源被针对多种语言进行本地化的应用程序也是一种好方法(请参见 MFC 应用程序中的本地化资源:附属 DLL)。
若要创建纯资源 DLL,请创建一个新的 Win32 DLL(非 MFC)项目,并将资源添加到此项目。
在“新建项目”对话框中选择“Win32 项目”,并在“Win32 项目向导”中指定 DLL 项目类型。
为 DLL 创建一个包含资源(如字符串或菜单)的新资源脚本,并保存该 .rc 文件。
在“项目”菜单上单击“添加现有项”,并在项目中插入这个新的 .rc 文件。
指定 /NOENTRY 链接器选项。/NOENTRY 防止链接器将 _main 引用链接到 DLL 中;此选项是创建纯资源 DLL 所必需的。
生成 DLL。
使用纯资源 DLL 的应用程序应调用 LoadLibrary 来显式链接到 DLL。若要访问资源,请调用一般函数 FindResource 和 LoadResource,这两个函数对任何类型的资源都有效,或调用下列资源特定的函数之一:
FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
使用完资源后,应用程序应调用 FreeLibrary。
您想进一步了解什么?
使用资源
请参见
DLL
OpenHero
2005-07-29
打赏
举报
回复
我到公司的第一个任务就是这个,哈哈哈
资料好多:)
你找找吧
baidu
AntonlioX
2005-07-29
打赏
举报
回复
纯资源DLL的编写- -
纯资源 DLL是仅包含资源(图标,位图,字符串,声音,视频,对话框等)的 DLL。使用纯资源DLL可以节约可执行文件的大小,可以被所有的应用程序所共享,从而提高系统性能。纯资源DLL的编写比普通的DLL要简单的多,使用纯资源 DLL 可用来在多个程序之间共享同一组资源以及对多种语言进行本地化的应用.
要创建纯资源 DLL
1. 应创建一个新的 Win32 DLL(非 MFC)项目VC6环境中: File-> New-> Project-> Win32 Dynamic Link Library
2. 选择an empty project.
3. 完成后,指定 /NOENTRY 链接器选项,/NOENTRY 防止链接器将 _main 引用链接到 DLL 中;。此选项是创建纯资源 DLL 所必需的 用一下几种方法之一 :
a. 在菜单Project->Settings->link中,选中Setting for的All configrations;在common options 中加入 /noentry。
b. 在工程的属性页-链接器-高级-资源仅限于DLL中选择"是 (/NOENTRY)")。
c. VC++6.0 Project ->Setting ->link:选中Setting for 的 Win32 Debug 并在 progectOptions 中加入 /noentry;
4. 创建一个资源文件 *.RC,添加到资源DLL的工程中去
5. 创建所需资源:
创建一个字符串资源,为IDS_STRING101 其值为101 内容为TEST。
创建一个图标资源,ID为IDI_ICON1
6. 然后添加一个初始化DLL的原文件。
#include <windows.h>
extern "C"
BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID )
{
return 1;
}
7. 编译生成 DLL。
使用纯资源 DLL
使用纯资源 DLL 的应用程序应调用 LoadLibrary 来显式链接到 DLL。若要访问资源,请调用一般函数 FindResource 和 LoadResource,这两个函数对任何类型的资源都有效,或调用下列资源特定的函数之一:
FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
对于象对话框、位图、图标这些标准资源,一般不使用FindResource,只有对于非标准资源,才使用FindResource()
使用完资源后,应用程序应调用 FreeLibrary。
[使用例子]
对于刚才创建的字符串和图标资源,我们使用下面方法来使用字符串资源和图标资源:
首先在相应的.h文件中设定
#define IDS_STRING101 101
#define IDI_ICON1 102
//装载资源
HINSTANCE hDll;
hDll = LoadLibrary("ResourceDll.dll");
//使用字符串资源
char strRes[MAX_PATH];
LoadString(hDll,IDS_STRING101,strRes,MAX_PATH);
AfxMessageBox(strRes);
//使用图标资源
AfxSetResourceHandle(hDll);
HICON hIcon = ::LoadIcon(hDll,MAKEINTRESOURCE(IDI_ICON1));
//使用对话框
1、如果采用MFC方式,可以使用AfxSetResourceHandle设置资源DLL的句柄,如:
hDll=LoadLibrary("ResourceDLL.dll");
if(hDll==NULL)
AfxMessageBox("Can't Load the library");
else AfxMessageBox("success");
AfxSetResourceHandle(hDLL);
...
}
这样以后你再使用CDialog创建对话框时,对话框将来自你的资源DLL,而不是.exe文件。如果你在程序中还要使用.exe中的资源,你需要在 AfxSetResourceHandle之前,先使用 AfxGetResourceHandle保存当前的资源文件句柄。
2、SDK方式。你在调用CreateDialog或DialogBox时,它们的第一个参数都是HINSTANCE,就是你LoadLibrary获得的句柄。你不需要使用FindResource,CreateDialog或DialogBox会自动查找资源并加载。
//释放资源
FreeLibrary(hDll);
C#编写和调用
动态链接库
C#编写和调用
动态链接库
一、创建dll文件:例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1
C#中如何调用
动态链接库
DLL(转)
使用C#生成dll文件并调用(2010-06-05 16:19:16)转载▼标签:杂谈 使用C#生成dll文件并调用2009-11-21 09:00http://hi.baidu.com/wuxiaoming1733/blog/item/8e6b8c020ea23f074bfb51d5.html 一、创建dll文件:例如生成一个md5编码判断状态的文件,即,输入一个字符串(string ...
【深度分析】提问的艺术:从杜威的“
问题
哲学”到程序员的“破局思维”——如何用一句名言让你
解决
问题
的效率翻倍?
当你
解决
了一个
问题
之后,别忘了总结一下。想想这个
问题
是怎么产生的,你是怎么
解决
的,还有没有别的
解决
方法。这样下次再遇到类似的
问题
,你就能更快地
解决
了。而且你还能把总结的经验分享给别人,帮助更多的编程小伙伴。杜威的“
问题
哲学”不仅属于哲学史,更是程序员的技术圣经。从精准界定
问题
到系统重构认知,提问的艺术决定了代码的高度、团队的效率乃至技术的文明。正如Linux之父Linus Torvalds所言:“好的程序员能用代码
解决
问题
,伟大的程序员能用
问题
定义未来。
java 调用 动态库_java通过JNA调用动态库
前言老规矩,先说下为什么会有这篇文章。近期对接了一个项目,应接口提供方要求,必须通过动态库调用,一个是为了安全可控,调用方不用知道内部实现,加密、解密、具体的逻辑不需要考虑,只需要调用即可;另一个是封装了统一的GUI界面。总之就是非用动态库不可,然后我查了很多资料,
请教
了几个大佬,最后在运气的加持下,终于调通了,但整个过程特别坎坷,所以我觉有必要记录下。需要说明的是我们这里采用的是JNA的方式什么...
python winform开发_为什么我想使用Python和C#的来开发中大型测试类项目困难重重!...
原
问题
链接:请问大神们,LabVIEW NXG是什么版本,是要替代现行的LabVIEW吗?www.zhihu.com用户小明的
问题
:我对答主的通过Python和C#来脱离NI编程全家桶非常感兴趣,并苦苦研究用python和C#来设计测试类的中大型项目。但是目前遇到的
问题
是这两种语言严重缺少成体系的测试类的工具包和算法库文件。请问答主有没有
解决
这个
问题
?
请教
一下。我的回答:从编程语言的核心概念上来...
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章