Search code examples
c#.net32bit-64bit

How come my 64-bit program is calling a 32-bit DLL successfully?


I have a C# program, compiled for platform target x64. It uses C1.C1Zip, a dll file for processing Zip files. Examining C1.C1Zip.dll, it is a 32-bit dll (PE Deconstructor says so - 32-bit words). But my program is definitely 64-bit (Task Manager says so - details tab says Platform 64-bit).

I just successfully ran the code that used the C1.C1Zip dll, and it worked fine. I was given to understand that this is not possible.

How come this is happening?

What extra diagnostics can I run to ensure that my main program really is 64-bit?


Solution

  • Because it is not a native dll to start with. It is MANAGED CODE - bytecode - only. In this case 32 or 64 bit is relevant for the starting exe file (determine whether the process runs 32 or 64 bit) but not the loaded native assemblies later.