M9 1a8 8 0 1 0 0 16A8 8 0 0 0 9 1zm. M9 1a8 8 0 1 0 0 16A8 8 0 speed.exe 0xc000007b 0 9 1zM8 15. I have been developing on a single PC.
Now it needs two serial ports, so I borrowed a PC from a friend. Googling doesn’t bring up much, but seems to indicate that this is nothing Delphi specific and happens with other apps. It seems to be caused by calling into a 32 bit DLL from a 64 bit app or vice versa. Can anyone give me a hint as to how to track this down?
On a side note, you can use com0com to install virtual serial ports on a single PC. Great for debugging and testing, just create 2 virtual ports and link them together in the config, then run your apps on each port so they can talk to each other. Did you check the Windows Events Log? Sometimes Windows provides more information regarding which DLL made the app fail. It will be a missing DLL I suspect, usually some utility, or even the memory manager.
2008 Missing DLL gives a different error: The program can’t start because XXXX. Try reinstalling the program to fix this problem. You don’t get that when the system cannot find a DLL of that name. You get STATUS_INVALID_IMAGE_FORMAT when a DLL can be found, but it is corrupt, or has the wrong bitness. Which is a good indication that the 32-bit app tried to load a 64-bit DLL. As a matter of fact, this Error Code Pdf File is an excellent source.
Thanks, dependancy walker saved the day. I replaced a 64 bit DLL with a 32 bit version and it works now. Make sure you got the correct version of Dependency Walker. The x86 depends will display incorrect results for x64 binaries.
A load time dependency could not be resolved. The easiest way to debug this is to use Dependency Walker. Use the Profile option to get diagnostics output of the load process. This will identify the point of failure and should guide you to a solution.
The most common cause of this error is trying to load a 64 bit DLL into a 32 bit process, or vice versa. Also note that you should run the 32 bit version of dependency walker, and ensure that all loaded DLLs are 32 bit. If you try to run the 64 bit version dependency walker, it will happily load the 64 bit DLLs, such as VCRedist, even if your also have their 32 bit versions. Possibly, your dll that works with com ports have an unresolved dll dependence. You can use dependency walker and windows debugger. Check all of the mfc library, for example. I tried all the things specified here and found yet another answer.