.NET 응용프로그램에서 C/C++ dll 을 로드하는 경우가 있었는데 이 dll이 x64 환경에서 WOW 환경에서만 올바르게 동작이 되었다. 결국 .NET 응용프로그램을 WOW로 실행시켜야 한다.
.NET 응용프로그램 프로젝트의 플랫폼 옵션을 변경해 주면 된다.
MSDN 내용을 발취하면,
x86을 사용하면 어셈블리가 32비트, x86 호환 CLR에서 실행되도록 컴파일됩니다.
Itanium을 사용하면 어셈블리가 Itanium 프로세서 탑재 컴퓨터의 64비트 CLR에서 실행되도록 컴파일됩니다.
x64를 사용하면 어셈블리가 AMD64 또는 EM64T 명령 집합을 지원하는 컴퓨터의 64비트 CLR에서 실행되도록 컴파일됩니다.
anycpu(기본값)를 사용하면 어셈블리가 모든 플랫폼에서 실행되도록 컴파일됩니다.
64비트 Windows 운영 체제의 경우
/platform:x86으로 컴파일된 어셈블리는 WOW64에서 실행되는 32비트 CLR에서 실행됩니다.
/platform:anycpu로 컴파일된 실행 파일은 64비트 CLR에서 실행됩니다.
/platform:anycpu로 컴파일된 DLL은 이 DLL이 로드된 프로세스와 동일한 CLR에서 실행됩니다.
MSDN : /platform(C# 컴파일러 옵션)
*)
/platform:x86 으로 컴파일된 DLL,
/platform:anycpu 으로 컴파일된 어셈블리(exe)가 있다.
이 어셈블리에서 참조 추가로 x86으로 컴파일된 DLL을 참조 추가하였을때, x64 에서 어셈블리를 실행하면 x86 DLL 사용 시 런타임 예외가 발생한다.