纯资源 win32 dll,调用得不到 bitmap,为什么?

luwenguang 2003-10-17 09:08:05
//dll

1 project:win32 dll
2 insert -->resource--->bitmap,
3 save .rc。
4 bulid-->dll



//exe

HINSTANCE hinstLib = LoadLibrary("mydll.dll");
if(!hinstLib)
{
return ;
]

HBITMAP hBtmp = (HBITMAP)::LoadImage(hinstLib, "my.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMEFILE);

if(!hBtmp) //------------------------总为 NULL,为什么?
{
FreeLibrary(hinstLib);
return ;
}

FreeLibrary(hinstLib);


谢谢解答。
...全文
83 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
microran2000 2003-10-18
  • 打赏
  • 举报
回复
既然在执行LoadImage时失败,我想必定会返回一个错误码,你可以在监视窗口输入@err察看错误代码,然后获得错误描述信息.
yaoha2003 2003-10-18
  • 打赏
  • 举报
回复
UP
luwenguang 2003-10-18
  • 打赏
  • 举报
回复
我发现一个问题。


我建立一个 win32 dll。
加一个 .rc文件。bulid得到一个a.dll,a.dll文件大小为 16k。

然后我加一个bitmap 进去。build。得到 a.dll。发现 a.dll 文件大小还是 16k。


不可能吧?
应该怎么加 bitmap?
(我的方法:Insert--Resource---bitmap,这样有问题吗?)
luwenguang 2003-10-18
  • 打赏
  • 举报
回复
to symonds(就) ( ) 信誉:98 2003-10-17 22:52:00 得分:0
HBITMAP hBtmp = (HBITMAP)::LoadImage(hinstLib, "my.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMEFILE); 该命令表明了是从文件加载位图,你用LOADBITMAO命令



我测试了一 下。 LR_LOADFROMEFILE 这个标志位 确实有问题。
但两个函数 LoadImage(),LoadBitmap()应该是都可以使用的。

得到的 错误码 是 1814,使用 Error Lookup 看:找不到映像中指定的资源名。

奇怪。


luwenguang 2003-10-18
  • 打赏
  • 举报
回复
to yaoha2003:

我使用 LoadImage()不可能有错。

AFX_MANAGE_STATE(AfxGetStaticModuleState( ));这点倒是有可能错。我dll 是win32 dll。


to Richuen22(石志康)

你的参数是错的。

to symonds(就)

使用 LoadImage()绝对是可以的。
我觉得不是这里的问题。

to microran2000

我看了,有 资源。
LoadImage(),LoadBitmap()我都有试。应该不是这个问题。


我所 疑惑的就是在MFC中使用 纯资源dll 的时候有没有什么特别的约定。
就象akiko所说的那个函数。


你们都使用过 纯资源的dll 吗?是怎么使用的?
你们都使用成功了吗?

yaoha2003 2003-10-18
  • 打赏
  • 举报
回复
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));这个好像是同步全局变量用的,你在DLL用这个试试,而且我觉得你的LoadImage()用得也不对,要怎样用我也不知道,关注好了
microran2000 2003-10-18
  • 打赏
  • 举报
回复
首先你应该采用Visual C++以资源方式打开这个动态链接库,保证你能够看到动态链接库中包含位图资源.并能编辑(确定是否为空).
另外以文本方式打开你的DLL项目中的mydll.rc文件,确保存在下面
my.bmp BITMAP "???.bmp"
这里的名称要求与调用名称大小写严格匹配.
使用下面的函数试一下.这两个参数你已经知道了.
HBITMAP LoadBitmap(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpBitmapName // name of bitmap resource
);
Richuen22 2003-10-17
  • 打赏
  • 举报
回复
HBITMAP hBtmp = (HBITMAP)::LoadImage(AfxGetApp( )->m_hInstance, "my.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMEFILE);
symonds 2003-10-17
  • 打赏
  • 举报
回复
HBITMAP hBtmp = (HBITMAP)::LoadImage(hinstLib, "my.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMEFILE); 该命令表明了是从文件加载位图,你用LOADBITMAO命令
luwenguang 2003-10-17
  • 打赏
  • 举报
回复
to akiko

我的 .exe 是 MFC single document。

我感觉函数 AfxSetResourceHandle的使用有点怪。

1
在 CMyApp;;Initstance()中调用,弹出:建立 文档失败。
然后就退出了。


2
在 CMyView 中调用,结果还是得到 if(!hBtmp) //----总为 NULL,为什么?



这个是怎么回事?
akiko 2003-10-17
  • 打赏
  • 举报
回复
还得调用AfxSetResourceHandle
本版本与网上其他资源不同之处在于,此版本可进行编辑,搜索,已进行内容识别扫描。可全选,可编辑,可剪切文字。 部分目录如下: 第1 章计算机,游戏,我_ 我,云风,从二十年前的计 算机游戏萌芽阶段一路走来。计 算机,并不神秘。程序,也只是 表达计算机控制逻辑的符号而 巳。 第2 章算法,程序的灵魂 算法,先千计算机存在于世, 比编程语言本身更为蜇要C 语言 只是工具,算法才是灵魂。这里 简单介绍了数据结构的基本知 识、算法放率的评估方法、几种 NP 问题的定义。 这里对游戏中最常用的搜索 算法问题之一寻路问题做了些许 探讨,并展开介绍了在以后可能 被广泛使用的智能算法。最后用 几个实例探讨了优化问题。 1.1 计算机...................................................................... 2 1.2 计算机游戏............................................................., 3 1.3 计算机与我......................, ... , ................................... 7 1.3 .1 启蒙............................................................... 7 1.3 .2 编程..... , .................................... , .......... , ......... 9 13 2.1 程序=算法+数据结构............................................ 14 2.1.1 算法,.......................................................... ,, 15 2.1.2 数据结构,.................................................... 17 2.2 搜索算法,.............. . ............ .... ..................... . .. . ....... 23 2.2.l 地图寻路问题................................................ 23 2.2.2 博弈问题,...................................................... 27 2.2.3 更为广泛的运用............................................ 28 2.3 智能算法,............................................................... 29 2.3.1 遗传算法(Genetic Algorithm) .... ·........ …... 29 2.3.2 模拟退火算法(Simulated Annealing) ....... 31 2.3.3 禁忌搜索(Tabu Search) ............................. 33 2.3.4 人工神经网络 (Artificial Neural Network) …..... ….............. 34 2.4 优化,....................................................................... 36 2.4.1 质数问题....................................................... 36 1.4.2 俄罗斯方块竞赛............................................ 37 2.5 Apple II 上的编程之路.......................................... 39 XIII 第1 章计算机,游戏,我_ 我,云风,从二十年前的计 算机游戏萌芽阶段一路走来。计 算机,并不神秘。程序,也只是 表达计算机控制逻辑的符号而 巳。 第2 章算法,程序的灵魂 算法,先千计算机存在于世, 比编程语言本身更为蜇要C 语言 只是工具,算法才是灵魂。这里 简单介绍了数据结构的基本知 识、算法放率的评估方法、几种 NP 问题的定义。 这里对游戏中最常用的搜索 算法问题之一寻路问题做了些许 探讨,并展开介绍了在以后可能 被广泛使用的智能算法。最后用 几个实例探讨了优化问题。 1.1 计算机...................................................................... 2 1.2 计算机游戏............................................................., 3 1.3 计算机与我......................, ... , ................................... 7 1.3 .1 启蒙............................................................... 7 1.3 .2 编程..... , .................................... , .......... , ......... 9 13 2.1 程序=算法+数据结构............................................ 14 2.1.1 算法,.......................................................... ,, 15 2.1.2 数据结构,.................................................... 17 2.2 搜索算法,.............. . ............ .... ..................... . .. . ....... 23 2.2.l 地图寻路问题................................................ 23 2.2.2 博弈问题,...................................................... 27 2.2.3 更为广泛的运用............................................ 28 2.3 智能算法,............................................................... 29 2.3.1 遗传算法(Genetic Algorithm) .... ·........ …... 29 2.3.2 模拟退火算法(Simulated Annealing) ....... 31 2.3.3 禁忌搜索(Tabu Search) ............................. 33 2.3.4 人工神经网络 (Artificial Neural Network) …..... ….............. 34 2.4 优化,....................................................................... 36 2.4.1 质数问题....................................................... 36 1.4.2 俄罗斯方块竞赛............................................ 37 2.5 Apple II 上的编程之路.......................................... 39 XIII 第3 章编程语言 至少要学会一种编程语言, 才可能编写游戏软件。流传于世 的编程语言数以百计,但真正流 行的却不多。各种编程语言之间 有它们的共通性,但也并非能够 一通百通,甚至也不存在一种适 合娇决所有问题的语言。 我认为大部分游戏程序员都 应该掌握工作平台的汇编语言。 这对理解硬件, 写出更好的代码, 还有软件调试都有莫大的帮助。 第4 章前Windows 时代 现在, Win d ows 一统江山, 它帮我们稳藏了硬件的许多东西。 这一章是对1 0 年前知识的一个回 顾,它们如今已经沉寂在历史中, 或是被Windows 掩盖。但是, 作 为喜爱创根l河底的程序员,我们有 必要对Window s 之前的时代有一 些了解。 XIV 3.1 C 语言................................................, .. ,, .......... ,.,,. 46 3.2 BASIC ..................................................................... 50 3.3 Ct+ ......................................................................... 51 3 .4 汇编语言,............................................................... 54 3.4.1 概述.............................., ... , ....................... ,,, .. 55 3.4.2 程序的本质....., .. , ... , ...................................... 57 3.4.3 寄存器........................................................... 58 3.4.4 寻址方式....................................................... 60 3.4.5 汇编指令....................................................... 61 3.4.6 CIC++ 语言和汇编....................................... 62 3.4.7 ,J 、结... . .. .. . .. .. .... .... ....... .... .. . . .. ............ .. ........... 63 3.5 其他语言................................................................ 63 3.5.1 Forth .............................................................. 63 3.5.2 Lisp ................................................................ 64 3.5.3 Java····..................................................... ....... 64 3.5.4 Python 、Lua 、更多...................................... 65 4.1 386 保护模式......................................................... 68 4.2 VGA 至U VESA ...................................................... 70 4.2.1 超越BGI ...................................................... 70 4.2.2 VGA·....... ··· · ···............................................... 72 4.2.3 VESA 标准................................................... 72 4.2.4 花絮............................................................... 74 4.3 保护模式下的开发工具.... …... ……............. ………··75 4.4 闲话Allegro .......................................................... 81 4.4.1 用C 与汇编写成的程序库….... …·….............. 81 442 BITMAP···.....................................................8 2 4.4.3 Sprite···.. ·.. ·.... ·.. ·.. ··.. ·.. ·········.. ··.... ···············.. ··85 4.4.4 几何图形和3D··........................................... 89 4.4.5 数据文件............... .-....................................... 91 4.4.6 声音............................................................... 92 4.4.7 其他的部分................................................... 93 45 67 第5 章Windows 编程 如果我们在Window s 下开 发游戏,那么理惮Window s 系统 就是尤为重要的事情。Window s 只是一个操作系统的特例,不属 子计算机理论知识的范畴。这导 致了许多已经掌握了编程知识, 理论功底也很扎实的程序员, 面 对Window s 下的开发无可适从。 第6 章汇编优化 汇编优化, 是在高性能游戏 引擎设计中很难避免的一个环 节。虽然不用汇编去做优化依然 可以写出高性能的程序,但优化 却可以变得更好。 但是,这一章并非从汇编开 始谈起。相反,一开始我就花了 不少笔墨谈汇编之外的知识。即 使是一些技巧性的细节, 也并非 必须用汇编才可以做到。 这一章着重介绍了在CIC++ 中和汇编进行混合编程的方法和 技巧,然后才具体谈到汇编指令 的高效使用策略。 4.4.8 ,J 、结............................................................... 94 4.5 cfido 中国惠多网.................................................. 94 5.1 Windows 编程入门............................, ................. 104 5.1.1 Windows 版本综述...... ,, ..... , ........................ 105 5.1.2 操作系统的核心................ ., ........................ 107 5.1.3 Windows API 和DLL.. ·······......................... 110 5.14 COM··........................................................... 111 5.1.5 Windows 的窗口和消息处理与传递........... 114 5.1.6 Windows GDI .................................. ............ 125 5.2 控制游戏的速度,................................................. 130 5 .3 浅谈M FC .................. .. ......................................... 132 5.4 小结,............................................................. . ....... 132 6.1 浅谈代码优化............................................... ..... .. 138 6.2 并不仅仅是汇编.................................................. 139 6.2.1 在算法实现时减少上下文的依赖关系.. ….. 139 6.2.2 低效的静态变量.................................... ... ... 140 6.2.3 数据的组织.................................... ... .......... 141 6.2.4 消除除法..................................................... 142 6.2.5 避免过大的循环.......................................... 144 6.3 汇编和CIC++ 的混合编程.................................. 146 6.3.1 使用外置的汇编编译器.. . ....... …............. …·146 6.3.2 使用内嵌汇编·· ·· · ··· ···········........................... 148 6.3.3 C++ 的函数调用规则........ ……..................... 150 6.3.4 寄存器的使用...................................... ........ 152 6.3.5 _declspec(naked)· ·· ·.... · · ·· · · ··... ·... ·.... · ·· · · ·· · ··.... 152 6.4 指令使用的技巧.................................................. 153 6.4.1 LEA: 别样的内存寻址指令................……·153 6.4.2 BSWAP: 扩展寄存器的个数......... ….... …··154 101 135 XV 第7 章S-I M D 指令 单指令多数据(SIMD , Single Instructio n-Mu l tiple- D ata) 编程是 现代CP U 高速处理多媒体数据 的发展方向。好的工具摆在一边 不去用就是一种浪费。 这里介绍得多的是MMX 使 用技巧,这方而也是我用得比较 多的,勉强算得上经验丰富。 第8 章引擎中的优化 单从内容来看,这一章是本 书的独家内容。我得以成名的开 源游戏引擎“风魂”的几乎所有 优化策略都在这章公开出来。虽 然引擎源码一直都是公开的, 想 研究的人自然可以通过阅读代码 来学习,但是,由作者本人来解 释其中的优化策略,这是第一次 的文字记录。 XVI 6.4.3 缩短指令的宇节数............ . .... . .................…155 6.4.4 避免跳转指令............................................. 159 6.5 Pentium 的汇编优化策略...... ….......................... 161 6.5.1 UV 流水线................................................... 163 6.5.2 AGI 地址生成互锁 ( Address Generation Interlock)· · ………... 167 6.5.3 Pentium Pro, Pentium II 和Pentium III 的汇编优化策略......................................... 168 6.5.4 Pentium 4 的汇编优化策略…...... …............. 178 6.5.5 如何测试代码的速度…............................... 181 6.5.6 汇编能干的事情.......................................... 183 7.1 单指令多数据编程...... .. ..... ...... .. .. . .. .. ..... ... .. .. ...... 186 7.1.1 Alpha 混合.................................................. 187 7.2 MMX .................................................................... 191 7.2.1 MMX 的指令概况....................................... 192 7.2.2 SSE 及其对MMX 的扩展,......................... 194 7.2.3 SIMD 技术在C 语言环境下的使用...…….. 196 7.2.4 MMX 编码技巧.......................................... 197 7.2.5 SIMD 的应用举例...................................... 201 7.2.6 SIMD 编程注意要点. .................................. 203 7.2.7 SIMD 的性能检测....................................... 204 8.1 Blit 的优化........................................................... 207 8.2 脏矩形优化............................ . ............................. 209 8.2.1 "风魂”中改进的脏矩形算法...........…..... 215 8.2.2 滚动优化..................................................... 219 8.2.3 覆盖优化............................................. . ....... 222 8.2.4 脏矩形在3D 游戏界面中的运用....... .. .. . .... 224 8.2.5 时间和空间的权衡...................................... 229 8.2.6 关于估算..................................................... 230 185 205

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧