If you are running on a 64 bit system and trying to load a 32 bit dll you need to compile your application as 32 bit instead of any cpu. If you are not doing this it behaves exactly as you describe.
If that isn't the case use Dependency Walker to verify that the dll has its required dependencies.