- Windows操作系统何时将DLL加载到内存中?
- 该操作是在应用程序启动时还是应用程序首先调用DLL中的某个过程时发生的?
- 一旦DLL被加载,它可以被卸载吗?
回答
什么时候Windows操作系统 加载到内存中的DLL?
要是连你的EXE到DLL隐含通过的.lib文件,就像你通常对于大多数Windows做的API,例如user32.dll中和KERNEL32.DLL,那么defautl的行为是对DLL在进程启动时以及在调用WinMain/main函数之前加载。请参阅下面的延迟加载...
如果一个DLL依赖于另一个DLL,它将首先加载其依赖关系,如果它们尚未加载。
如果你明确地通过DLL(调用LoadLibrary,CoCreateInstance的,等...)加载代码,然后它会被在作出这些电话
操作是否发生时 应用程序启动或加载时 应用程序首先调用DLL中的 程序之一?
你可以拥有它。默认情况下,DLL在应用程序启动时加载。如果您使用/DELAYLOAD linker flag,则DLL可能会推迟被加载,直到其实际需要。这是“尽最大努力” - 如果全局变量存在奇怪的导出依赖项,则可能无法正常工作。
一旦DLL被载入,它可以被卸载吗?
对于已链接的隐式DLL依赖关系,简答题为“否”。 FreeLibrary和CoFreeUnusedLibrary可用于LoadLibrary/CoCreateInstance调用。
我打算假设我们在说.net。在您需要代码之前就会发生这种情况。但是您可以使用后期绑定在其他时间执行此操作。看到这个页面link text
在windows API中,你可以明确地控制一个.dll的加载和卸载。
请参阅LoadLibrary和FreeLibrary作为起点。
根据您使用的语言/工具,加载库的许多细节将为您照顾,但通常您仍然可以获得明确的控制权,如果您确实需要。
我正在使用C++来处理winsock。任何进一步可以更详细? – antonio081014 2010-09-22 05:26:24
- 1. 关于'delayed_job'的一些基本问题
- 2. 有关Java的一些基本问题
- 3. 关于关系数据库的一些基本问题
- 4. Dll插件基本问题
- 5. 关于WPF的一个基本问题
- 6. 关于测试或单元测试的一些基本问题
- 7. 关于面向对象编程的一些基本问题
- 8. 关于flex/AS的一些基本问题
- 9. 需要澄清一些关于asp.net mvc的基本问题
- 10. 关于javax和java包的一些基本问题
- 11. 关于“Hello World”的一些基本问题
- 12. Cpp一些基本问题
- 13. DOM文档:一些基本问题
- 14. 关于关注WPF的一些问题
- 15. 关于CLASSES的基本问题
- 16. 关于CodeIgniter URL的基本问题
- 17. 关于Rxjs的基本问题
- 18. 关于拳击/ c#的基本问题#
- 19. 关于sql的基本问题
- 20. 关于Microsoft CryptoAPI的基本问题
- 21. 关于OOP的基本问题
- 22. 关于jquery和.NET的基本问题
- 23. 一些基本的COM问题
- 24. 遇到一些基本的问题KnockoutJS
- 25. 一些基本的UML问题
- 26. 一些基本的Azure问题
- 27. 关于GWT基础知识的一些问题
- 28. 关于Git的一些(基础)问题和说明
- 29. GWT/Java - 关于示例代码的一些基本的UI问题
- 30. 关于流的一些问题
我使用C++来处理winsock。任何进一步可以更详细? – antonio081014 2010-09-22 05:28:56