Microsoft KB Archive/159408

= PRB: "Error in Loading DLL" if Calling Multimedia API Functions =

Article ID: 159408

Article Last Modified on 6/29/2004

-

APPLIES TO


 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

-



This article was previously published under Q159408



SYMPTOMS
When you call multimedia API functions from 32-bit Visual Basic for Windows using the Declare statements retrieved from the 32-bit API Text Viewer, the following error message appears:

"Error in loading DLL"



CAUSE
The error occurs because the 32-bit API Text Viewer incorrectly uses the Declare statements for Mmsystem.dll, which is a 16-bit DLL.



MORE INFORMATION
A 32-bit program cannot directly execute functions in a 16-bit DLL. A thunking layer is required. The thunking layer allows you to load a 16-bit DLL and place the processor in 16-bit mode so you can execute the appropriate code. However, Visual Basic for Windows cannot implement a thunking layer and its use is not supported. There are two ways around this behavior:


 * 1) See the following article in the Microsoft Knowledge Base that describes how to call the 16-bit Mmsystem.dll functions:

141939 : How to Create an OLE Server to Implement Thunking
 * 1) Call the functions from Winmm.dll, the Windows 95, Windows 98, Windows NT, and Windows 2000 library for multimedia. Winmm.dll is a 32-bit library that supports multimedia services. This method requires the proper Declare statements for Winmm.dll.

