为什么用LoadLibrary不行,用LoadLibraryEx就可以呢???

gumpan 2002-08-03 09:54:58
我用一个my.dll,自动联接av.dll,我用LoadLibrary("my.dll"),GetLastError返回
”指定的模块找不到“,再用LoadLibraryEx("my.dll",NULL,DONT_RESOLVE_DLL_REFERENCES)就ok.

(附:1. DONT_RESOLVE_DLL_REFERENCES,DONT_RESOLVE_DLL_REFERENCES标志用于告诉系统将DLL映射到调用进程的地址空间中。通常情况下,当DLL被映射到进程的地址空间中时,系统要调用 D L L中的一个特殊函数,即 DllMain。该函数用于对DLL进行初始化。 DONT_RESOLVE_DLL_REFERENCE S标志使系统不必调用Dll Main函数就能映射文件映像。
D L L能够输入另一个D L L中包含的函数。当系统将一个 D L L映射到进程的地址空间
中时,它也要查看该DLL是否需要其他的DLL,并且自动加载这些DLL。当DONT_RESOLVE _DLL_REFERENCES标志被设定时,系统并不自动将其他的DLL加载到进程的地址空间中。)

DLL难道是av.dll找不到,但av.dll是我在编译my.dll时加av.lib自动联上的,请问有什么直接的办法来检测自动联接的av.dll是否在LoadLibrary("my.dll")时是错误之根源??
...全文
2962 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
In355Hz 2002-08-03
  • 打赏
  • 举报
回复
是不是my.dll的DllMain函数返回FALSE?
如果是扩展Dll,看看C*App::InitInstance()是不是正确返回了
webber84 2002-08-03
  • 打赏
  • 举报
回复
你看看av.dll的DllMain有没有返回true啊。
jtls 2002-08-03
  • 打赏
  • 举报
回复
应该是av.dll没有找到,编译时能连接av.lib并不代表编译时一定有av.dll。
av.dll是运行时才需要的编译时不需要
wuxuan 2002-08-03
  • 打赏
  • 举报
回复
同意楼上朋友的看法.
gumpan 2002-08-03
  • 打赏
  • 举报
回复
正是因为my.dll的DllMain返回FALSE,LoadLibrary才返回NULL,
当用LoadLibraryEx("my.dll",NULL,DONT_RESOLVE_DLL_REFERENCES)时,ok!
但也不能证明my.dll本身就没有Error,因为LoadLibraryEx时,没有调用my.dll
的DllMain,也没有映射其它的dll,包括av.dll在内.但即便是my.dll的DllMain
初始化不成功,也不应该是“指定的模块找不到“。何况DllMain内只是作初始化,没有理由fail.只是我不知怎样跳过my.dll,直接加载av.dll,以证明是av.dll的不可加载。

16,549

社区成员

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

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

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