2012-07-11 3 views
2

x64 코드에서 x86 dll (타사, 소스에 액세스 할 필요 없음)에 액세스해야합니다. 필자의 연구에 따르면 dll을 COM + 래퍼에 넣고 OOP 서비스로 액세스하는 것이 가장 적합한 방법이었습니다.x86 x64 코드에서 COM + 서버 액세스

지금까지 그렇게 좋았습니다.

따라서 "NET 2.0 상호 운용성 레시피 - 문제 해결 방법"(VS2010 및 .NET4를 실행 중이지만)의 가이드를 따르십시오. 나는 개념 증명 서비스 (dll)와 테스트 클라이언트 (exe)를 만들었습니다.이 서비스는 OOP가 될 서버 응용 프로그램으로 실행됩니다. 그들은 모두 작동하며 구성 요소 서비스를 통해 서비스를 비활성화하면 올바른 경로를 사용하고있는 것처럼 보입니다.

이것은 모두 x86입니다.

클라이언트를 x64로 변경하면 'BadImageFormatException'이 발생합니다. 단순히 x86 dll을로드하는 경우에 예상되지만 OOP를 실행해야합니다.

나는 뭔가를 놓친다는 것을 알고 있으며, 아마도 매우 분명합니다.

기타 참고 사항 :

1) 나는 regsvcs 빌드를 게시 실행하고 regsvcs는/u는 문제의 DLL이 그대로 붙어, 내 주요 코드베이스는 64에게 당신이 필요

답변

0

수있다) 2 사전 빌드 모든 플랫폼에서 프로그램을 x86 모드로 강제 실행하십시오. 주 어셈블리의 속성으로 이동하고 '빌드'탭에서 '플랫폼 대상'을 '모든 CPU'에서 'x86'으로 변경합니다. 이렇게하면 모든 어셈블리가 x64 컴퓨터에서도 x86 모드로 실행됩니다.

+0

모두가 CPU이고 서버가 x86이고 클라이언트가 x64입니다. 나는 클라이언트가 x86에서 실행되는 것을 원하지 않는다. COM +를 사용하는 모든 목적을 물리 칠 것이다. 단지 코드에서 dll을 사용할 수 있기 때문이다. – Oybon

관련 문제