本文主要是介绍dll过多导致 LoadLibrary 1114错误的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在较低版本的操作系统,如windows 7 上,如果一个应用程序加载过多的dll, 会收到1114错误,dll初始化失败。原因是 TLS(FLS) index 消耗完毕,无法再创建更多的tls index, 导致无法加载dll.
解决办法,hook FLSAlloc 函数,自行分配TLS/fls 空间。
FLS: Fiber local storage
TLS: thread local storage
Fiber(纤程),用户级线程,内核 无法感知,可以理解为系统线程内部的调度队列,为了让线程工作更饱和。
Thread(线程),为系统级线程,即通常说的线程。
每个fiber/thread都需要创建一个fls/tls index。系统拥有的index数量有限,太多的dll加载,导致index消耗完毕,从而无法加载新的dll.
MT模式消耗的index比MD模式更多。
这篇关于dll过多导致 LoadLibrary 1114错误的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!