我用一个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")时是错误之根源??
”指定的模块找不到“,再用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")时是错误之根源??
解决方案 »
- WinMain的输入参数HINSTANCE是进程的句柄吗,其含义和CreateProcess的返回值是否一样?
- 这是小弟的一个多播代码,麻烦高手看一下问题在哪里
- 關于SSDBGRID問題
- 非中文字符变为中文字符?用c或者c++实现都可以,大侠请把源代码贴上来啊,马上给分哈
- ============ 请教ListCtrl头的问题 ===========
- 在基於對話框的程序中, 如何使程序一啟動就最小化至右下角托盤區?
- 无法用Sql语句一次选出的纪录,能否第一次选出到记录集后,再执行Sql语句选部分纪录?
- 怎样把后缀表达式变成中缀表达式??
- 关于多线程的询问
- 各位大侠,在编辑对话框时,如何在Controls Toolbar中添加快捷按钮?请给予帮助。
- 谁那有VC的SERVICE PACK
- 图标题取器1.2发布,欢迎下载使用,http://icnw.myrice.com
如果是扩展Dll,看看C*App::InitInstance()是不是正确返回了
当用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的不可加载。
av.dll是运行时才需要的编译时不需要