The information in this article applies to:
SYMPTOMSYour dynamic-link library (DLL) uses __declspec(thread) to allocate thread local storage (TLS). There are no problems running an application that is statically linked with the DLL's import library. However, when an application uses LoadLibrary() to load the DLL instead of using the import library, LoadLibrary() fails on Win32s with LoadLibrary() succeeds under Windows NT and Windows 2000 in this situation; however, the application cannot successfully call functions in the DLL. CAUSEThis is a limitation of LoadLibrary() and __declspec(). The global variable space for a thread is allocated at run time. The size is based on a calculation of the requirements of the application plus the requirements of all of the DLLs that are statically linked. When you use LoadLibrary(), there is no way to extend this space to allow for the thread local variables declared with __declspec(thread). This can cause a protection fault either when the DLL is dynamically loaded or code references the data. RESOLUTION
DLLs that use __declspec(thread) should not be loaded with LoadLibrary().
Additional query words: 1.10 1.20 3.50
Keywords : kbDLL kbKernBase kbWinOS2000 kbThread kbDSupport kbGrpKernBase |
Last Reviewed: January 5, 2000 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |