The most probably reason for that may be an attempt to mix 32-bit and 64-bit code. On 64-bit Windows platform, 32-bit applications run on top of the compatibility platform called WoW64, see
http://en.wikipedia.org/wiki/WoW64[
^].
If you try to bind 32-bit and 64-bit components in one application you might successfully link them together statically or dynamically (through load library) but in this case you will always end up with run-time crash at the attempt of the cross call. This is not working in principle.
Crossing the boundary between processor architecture on the same machine using COM technology is quite possible but only through inter-process communications (
http://msdn.microsoft.com/en-us/library/aa365574(v=vs.85).aspx[
^]). The calls between components compiled for different processor architectures have to be remote procedure calls like in DCOM.
—SA