LoadLibrary问题

sxqinge 2016-09-18 06:28:04
环境:XP系统,VS2005;
事件:加载GdiPlus.dll
操作环境:
1)非CE环境,调用LoadLibrary正常;
2)CE6.0环境,调用LoadLibrary失败,返回值126.
调用方法:
int ret = 0;
HMODULE hModule = ::LoadLibrary(_T("GdiPlus.dll"));
if(NULL == hModule ) ret = GetLastError();
TRACE(_T("-----result: %d"),ret);

-----------------------
网上找资料说有可能是缺少dll的依赖库,但是为什么我在非CE环境下就没问题呢?也曾尝试使用绝对路径,但结果一样。
百思不得其解,求大牛给解疑答惑下,谢谢。
...全文
375 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2016-09-21
  • 打赏
  • 举报
回复
winCE没搞过,但和PC相比,限制肯定会比较多,毕竟其硬件有相当的特殊性,这是我的理解。 如果如楼上所说弄个虚拟机,估计也够winCE设备受的了,当然,具体怎么运行这个虚拟机,我是没有经验的,也没有看见过(在winCE上) 如果其本身不支持这个库,那总体来说会很麻烦,个人觉得,通常来说是重写比较好,虽然很慢,但其可以被完全把控
赵4老师 2016-09-20
  • 打赏
  • 举报
回复
想要问问你敢不敢,先在WinCE上运行虚拟机软件,再在虚拟机软件里面加载运行WinXP?!
sxqinge 2016-09-20
  • 打赏
  • 举报
回复
引用 13 楼 jszj 的回复:
应该是CE不支持gdi+,所以也缺少相应的依赖库,即使你用非一般的方法load成功了,那也是仅加到内存里而已,可能不会构造各种object,所以自然也就无法调用。
正是如此,那现在还有其他办法吗?我现在的工作是要把window xp平台上的程序移植到CE上面去,因为是基于CAD的二次开发,所以集聚了大量的GDI+操作,现在为此事忙活了一周多了,仍无头绪,深感焦虑。
sxqinge 2016-09-19
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
使用depends.exe查看dll依赖的其它dll
同样的工程,只是不基于CE,它是可以成功调用DLL的,因此应该不存在缺少依赖DLL问题
sxqinge 2016-09-19
  • 打赏
  • 举报
回复
引用 4 楼 crjwlaq 的回复:
1. 是不是编码的问题? 2. 你用 LoadLibraryW 试试 3. 版本对吗? 4.路径对吗? 用全路径试试
用::LoadLibraryEx方式,里面加入绝对路径,可以获取到指针值了,但是调试发现unused的值为0,这样导致虽然指针非空了,但如果要调用内部函数时,取值失败
赵4老师 2016-09-19
  • 打赏
  • 举报
回复
使用depends.exe查看dll依赖的其它dll
crjwlaq 2016-09-19
  • 打赏
  • 举报
回复
1. 是不是编码的问题? 2. 你用 LoadLibraryW 试试 3. 版本对吗? 4.路径对吗? 用全路径试试
sxqinge 2016-09-19
  • 打赏
  • 举报
回复
自己顶一顶,大神给指导指导
red-fly 2016-09-19
  • 打赏
  • 举报
回复
应该是CE不支持gdi+,所以也缺少相应的依赖库,即使你用非一般的方法load成功了,那也是仅加到内存里而已,可能不会构造各种object,所以自然也就无法调用。
sxqinge 2016-09-19
  • 打赏
  • 举报
回复
引用 9 楼 oyljerry 的回复:
系统不一样,有些dll可能有缺失
引用 10 楼 xuddk727 的回复:
gdi+依赖于GDI,我以前做M8开发的时候觉得GDI函数好像都不是全部支持吧,两者GDI虽然大部分函数应该是一致的,但是不能证明是同一个东西。若是基于这的话,你调用失败就很正常了
谢谢两位版主大大的回复。 我也网上找了些资料,说LoadLibrary调用失败,而LoadLibraryEx成功的话,有可能是DLL本身不支持,只是后者会忽略这个错误,但在调用具体的函数时仍会是失败的。 那是不是说明我要放弃这个转换方法了呢?有什么好的方法,以实现CE环境对GDI+的支持吗?如果要用GDI去吧GDI+的对象重写个,那工作量还是蛮大的
sxqinge 2016-09-19
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
http://www.pudn.com/downloads163/sourcecode/comm/windows_mobile/detail744677.html
谢谢赵老师,我就是用的这个工程里面的封装类,参见http://www.ernzo.com/LibGdiplus.aspx 大概就是调用gdiplus.dll,获取指针,然后在做层封装,用这个指针去访问GDI+的函数,以实现CE系统和XP系统一样的GDI+访问效果
许文君 2016-09-19
  • 打赏
  • 举报
回复
gdi+依赖于GDI,我以前做M8开发的时候觉得GDI函数好像都不是全部支持吧,两者GDI虽然大部分函数应该是一致的,但是不能证明是同一个东西。若是基于这的话,你调用失败就很正常了
oyljerry 2016-09-19
  • 打赏
  • 举报
回复
系统不一样,有些dll可能有缺失

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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