After compiling a Visual Basic project that references more than one type library on one platform (such as a Microsoft Windows 2000-based computer), the resulting binary fails to run on other platforms (such as Microsoft Windows NT 4-, Microsoft Windows 95-, Microsoft Windows 98-, and Microsoft Windows ME-based computers) and gets an Access Violation (AV).
The Visual Basic compiler is case sensitive when it is reading entries for dllname
in type libraries. As a result, if a project references two or more type libraries and the dllname
entry for the same DLL is spelled in different cases in different libraries, such as dllname("kernel32.dll") in library A, and dllname("KERNEL32.DLL") in library B, the compiler generates two import sections for the same DLL and renders the binary platform dependent.
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.