we use a self-written 32bit C++ DLL from our C# applications. Now we\'ve noticed that when the C# applications are run on a 64bit system, the 64bit runtime is automatically used
You need to make sure that you're only using P/Invoke calls against a 64bit DLL when compiling in 64bit.
One option is to move all of your "methods" into a standard interface (or abstract base class), and provide 2 implementations, one 32bit and one 64bit. You can have a factory method construct the appropriate instance of the class depending on the size of IntPtr.
This allows an "AnyCPU" app to correctly, at runtime, determine which DLL to P/Invoke into, and does work.