There is too little information to say anything certain.
Just few items to check up.
There are three main different instruction-set architectures supported by Windows: 32-bit x86 (
http://en.wikipedia.org/wiki/X86[
^]) and two 64-bit ones: IA-64 "Itanium (
http://en.wikipedia.org/wiki/Itanium[
^]) and x86-64 (
http://en.wikipedia.org/wiki/X86-64[
^]).
They are all incompatible with each others, but all 32-bit applications will run on any 64-bit Windows OS on the platform WoW64 (Windows 32-bit On Windows 64-bit), which is a 64-bit subsystem to run 32-bit applications, see
http://en.wikipedia.org/wiki/WoW64[
^].
Now, why your application may fail to run? Because any of the three instructions-set architectures are incompatible if you try to link them in a single executable. They will compile but will crash when attempted to run in a single process. Of course, running components using different architectures and communicating through IPC (remote procedure call, DCOM — you name it) is not a problem.
You might end up messing up different components in one process as you run it on 64-platform. Some components might rely on system components, but those are now different. It's hard to sort out. First, you need to consider two options: 1) porting everything into your 64-bit instruction-set architecture or 2) running everything as 16-bit on WoW64.
To do that, you will need to learn all your dependencies. Use Microsoft
Dependency Walker:
http://dependencywalker.com/[
^].
Do you use any .NET components? There is another issue with them. As they are JIT-compiled, there is a special instruction-set architecture target: "Any CPU". The this is the option of the entry assembly of the application, it means that the real target architecture to be used is defined by the OS. If this is a library, the architecture is defined by setting of the referencing assembly. It all works, but if one of the assemblies is compiled with some concrete instruction-set architecture target and if there is a contradiction, the application will crash during run-time. Same thing happens if your application use P/Invoke of some native Windows code (unmanaged). It will crash unless instruction-set architectures match.
You see, so many potential source of trouble. You need to take a serious investigation.
—SA