2012-02-15 2 views
3

모두32 비트 및 64 비트 관리 어셈블리 혼합

32 비트 컴퓨터에서 실행되는 .NET 관리 응용 프로그램이 있습니다. 64 비트로 컴파일하고 64 비트 머신으로 포팅해도 괜찮습니다. 그러나 32 비트 어셈블리 인 일부 타사 DLL에 의존합니다. 64 비트 머신에서 64 비트 및 32 비트 어셈블리를 함께 실행할 수 있습니까?

감사합니다.

답변

4

가 동일한 프로세스에서 실행하지 않을 경우 \ 대신

빈의

.

OS의 프로세스가 다른 "비트 너비"의 어셈블리를로드 할 수 없습니다. 일단 선택되면 모든 어셈블리가 준수해야합니다. 일반적으로 32 비트 DLL을 64 비트 프로세스로로드하려고 시도하거나 그 반대로로드하려고 시도하면 BadImageFormatException이 표시됩니다.

세 가지 옵션 :

  1. 문제 DLL을 (이상적인)의 64 비트 버전을 가져옵니다.
  2. 항상 32 비트 전용으로 실행됩니다 (일반적으로 선택한 경로).
  3. 다른 프로세스에서 문제 DLL을 실행하고 IPC와 같은 것을 사용하여 프로세스 경계 (극단적 인 경우도 있지만이 작업을 한 번 수행해야 함)를 말하십시오.

64 비트 OS에서 32 비트로 실행하는 데 본질적으로 문제가있는 것은 아니지만 속도가 느려지는 생각에 빠지지 마십시오.

0

제 경험으로 얻은 것입니다.

필자는 제어 할 수없는 32 비트 AS/400 COM 라이브러리에 의존하는 시스템을 개발했습니다. 문제에 봉착하고 응용 프로그램의 32 비트 버전을 컴파일하여 문제를 해결했습니다.

모든 CPU를 대상 지정하는 대신 Visual Studio에서 x86으로 컴파일되도록 설정하십시오.

또한 생성 된 DLL과 실행 파일은 약간 다른 위치에 있습니다.

빈 \ 86 \ 디버그 디버그

0

32 비트를 실행하면 일 수 있습니다.은 느리지 만 메모리가 부족할 수 있습니다.

관련 문제