프로그램 구조는 .NET 3.5 에서 돌아가는 WPF 기반의 응용 프로그램에 통신 모듈은 C++/CLI DLL 라이브러리를 사용하는 프로그램 이었다.
이 C++/CLI DLL 라이브러리는 또한 Native로 된 C++ DLL 라이브러리를 사용하고 있었다.
보통 32bits OS에서 위 에러는 해당 CLISocketLib.dll에서 C++ Runtime Library를 사용하는데 해당 버전의 Runtime 라이브러리가 설치되지 않았을 경우 발생했다. 따라서, Runitme Library만 설치해주면 해결되었던 문제 인데, 이번에는 x64용 과 x86용 Runtime Library를 설치하였음에도 불구하고 계속 위 문제가 발생하였다.
결론은 메인 응용 프로그램인 WPF 응용 프로그램은 64bits 모드에서 동작하는데 반해, C++/CLI DLL은 32bits 모드에서 동작하도록 컴파일 되었기 때문이었다.
따라서 결국 최선의 해결책으로 WPF 응용 프로그램이 32bits 호환 모드에서 동작하도록 강제하여 컴파일 하여 배포함으로서 문제를 해결하였다.
보다 자세한 내용은 아래 링크의 위키페이지에 정리해 두었다.
64bits(x64) Windows OS 에 32bits(x86) 응용 프로그램 배포하기






