VB3 Diagnosing "Error in loading DLL" with LoadLibrary

Last reviewed: January 9, 1997
Article ID: Q90753
The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for

  Windows, versions 2.0 and 3.0
- Microsoft Visual Basic programming system for Windows, version 1.0

SUMMARY

The error "Error in loading DLL" (code 48) occurs when you call a dynamic-link library (DLL) procedure and the file specified in the procedure's Declare statement cannot be loaded. You can use the Microsoft Windows API function LoadLibrary to find out more specific information about why a DLL fails to load.

MORE INFORMATION

The API function LoadLibrary loads a DLL and returns either a handle or an error code. If the return value is less than 32, it indicates one of the errors listed below. A return value greater than or equal to 32 indicates success and you should call the FreeLibrary function to unload the library.

LoadLibrary Error Codes

 0 System was out of memory, executable file was corrupt, or
   relocations were invalid.

 2 File was not found.

 3 Path was not found.

 5 Attempt was made to dynamically link to a task, or there was a
   sharing or network-protection error.

 6 Library required separate data segments for each task.

 8 There was insufficient memory to start the application.

10 Windows version was incorrect.

11 Executable file was invalid. Either it was not a Windows

   application or there was an error in the .EXE image.

12 Application was designed for a different operating system.

13 Application was designed for MS-DOS 4.0.

14 Type of executable file was unknown.

15 Attempt was made to load a real-mode application (developed for

   an earlier version of Windows).

16 Attempt was made to load a second instance of an executable file
   containing multiple data segments that were not marked read-only.

19 Attempt was made to load a compressed executable file. The file
   must be decompressed before it can be loaded.

20 Dynamic-link library (DLL) file was invalid. One of the DLLs
   required to run this application was corrupt.

21 Application requires Microsoft Windows 32-bit extensions.

Steps to Create Example Program

The following program demonstrates how to call LoadLibrary to load a library and display a resulting error code.

  1. Run Visual Basic for Windows, or from the File menu, choose New Project (press ALT, F, N) if Visual Basic for Windows is already running. Form1 is created by default.

  2. Enter the following code into the general declarations section:

       Declare Function LoadLibrary Lib "kernel" (ByVal f$) As Integer
       Declare Sub FreeLibrary Lib "Kernel" (ByVal h As Integer)
    
    

  3. Enter the following code into the Form Click event handler:

       Sub Form_Click ()
          Dim hInst As Integer
          ' Enter the name of your DLL file inside the quotes below.
          ' The file WIN.COM is not a valid DLL and demonstrates an error.
          hInst = LoadLibrary("win.com")
          If hInst > 32 Then
             MsgBox "LoadLibrary success"
             FreeLibrary (hInst)
          Else
             MsgBox "LoadLibrary error " + Format$(hInst)
          End If
       End Sub
    
    

  4. Press the F5 key to run the program. Then click Form1. The program displays the error code returned from LoadLibrary. Look up this error code in the list of errors above to find an explanation.


KBCategory: kbprg kbcode
KBSubcategory: APrgOther
Additional reference words: 1.00 2.00 3.00


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: January 9, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.