对同一个DLL反复调用LoadLibrary只是增加DLL的引用计数,没有次数限制。
LoadLibrary不同的DLL会受到内存的限制,如果是32位程序,理论上只有不到2GB的可用内存,实际上只有不到1.8GB,因为还有系统保留内存。超过了这个限制,加载就会失败。
当然还可能是其它原因,比如LoadLibrary会调用DllMain函数,如果这个函数里做了些奇怪的事情导致返回错误,也会加载失败。
所以要掉用 GetLastError 看下原因,最好在DllMain里也打下log