Today I tried to install SAP HANA Client onto my Windows 7 64-bit laptop but it failed with some errors of “Registration of package “ODBO” failed”. The log mentioned that “Command line is: C:\WINDOWS\system32\regsvr32.exe /s “C:\Program Files\SAP\HDBClient\SAPNewDBMDXProvider.dll””, and “Program terminated with exit code 3”.
I did some google and found some others with similar failure to register ODBO, but their issue was that the “SystemDirectory” value could not be found. Their solution was to add an expandable string “SystemDirectory” in the registry under “HKLM\System\CurrentControlSet\Control\Windows”, and set it to “%SystemRoot%\system32”. This would conclude their issue, but my setting was correct so it did not help.
I then manually tried to run regsvr32, both 32-bit and 64-bit versions on this SAPNewDBMDXProvider.dll, which both came back with the perplexing error prompt “The module … may not compatible with the version of Windows that you’re running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.” (Microsoft bad grammar here…). How could it be neither 64-bit nor 32-bit?
Another failure in the log mentioned that the registering with “odbcreg” also fails. Then I found that when I clicked on any executable file installed in Program Files\sap\hdbclient directory, it would fail with “The Application was unable to start correctly (0xc000007b). Click OK to close the application”. Googling on this error code came back with a hideous number of results, pointing to different directions. Some suggested a system restore (Arrgh!) and others some registry clean-up tool (which didn’t work for me either). Yet some mentioned “The problem was due to 32/64-bit mismatches of various system dlls”, which looked a bit more reasonable to me.
Some further searching led me to this remarkable tool of Dependency Walker. When it opened a file (say regi.exe), it immediately prompted that there was a mixture of 32-bit and 64-bit dlls, and highlighted the 32-bit msvcr100.dll and msvcp100.dll in my windows\system32 directory. The strange thing was, even after I installed the Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) myself (HANA client did that as well), those files were not replaced, for some mysterious reasons.
Finally I manually extracted the x64 dll files from the redistributable package (WinRAR will do), renamed them and copied them into my system32 folder. Everything works out fine now.