2013-01-01 4 views
1

32 비트 상호 운용성 DLL을 사용하여 나는 64 비트 프로세스와 32 비트 상호 운용성 DLL을 사용하는 방법에 대한 약간의 혼란 스러워요. 8TB의 메모리에 액세스하려면 64 비트 용 응용 프로그램을 빌드 할 예정이며, 불행히도 32 비트 모드로 빌드 된 일부 통계 interop 라이브러리를 사용합니다. 이 라이브러리에 대한 소스가 없으므로 64 비트로 다시 빌드 할 수 없습니다.64 비트 응용 프로그램

this 문서의 제안은 IPC (예컨대 WCF)를 사용하여 내 애플리케이션과 통신 할 64 개 비트 대리 프로세스를 생성하는 것이다. Here 우리는 런타임 호출 가능 래퍼 (RCW)를 사용하는 솔루션을 찾을 수 있습니다. 어떤게 더 좋아? 나는 대리 프로세스를 구현하기 시작했고, 오늘 나는 내 요구에 적합한 지 모를 두 번째 해결책을 발견했다.

나는이 통계 상호 운용성 라이브러리 인터페이스와 클래스의 수백을 가지고 언급 할 필요가있다. 아직도 나는 그들 중 일부가 필요하다. WCF 서비스를 끝점으로 호스팅하는 WCF 서비스를 만들기 시작했습니다. 많은 코드/작업이 될 것 같습니다.

나는 상호 운용성 DLL을 함께 사용하는 두 번째 방법 (RCW)를 사용할 수 있습니까?

감사합니다, jotbek

+3

아마도 COM을 선택 하겠지만이 옵션들 사이에는 별다른 차이가 없을 것입니다. 가장 편리하고 쉬운 방법은 무엇입니까? 자, 귀하의 입장에서 나는이 제 3 자 라이브러리에 대한 의존성을 잃을 것을 강력히 고려하고 있습니다. 나는 항상 소스와 32 비트 코드에만 존재하는 블랙 박스에 대한 의존성으로 인해 나를 두려워하게 만듭니다. 주변에 좋은 통계 자료실이 있습니다. 미래의 증거가 될만한 것을 찾을 수 없습니까? –

+0

불행히도이 라이브러리를 사용하는 것이 주요 포인트입니다. 그래서 Interop DLL에 RCW 솔루션을 사용하는 것이 문제가 아니라고 생각하십니까? – jotbek

+0

우리는 귀하의 요구 사항을 모른다. RPC는 perf를 가질 수 있습니다. 의미. 그러나 중요한 것이 아니라면 RPC가 무엇이든지간에 사용할 수 있습니다. 당신의 필요를 충족시키는 라이브러리가 하나 밖에 없다는 것을 상상하기 란 매우 어렵습니다. –

답변

4

글쎄, "더 나은"로드 된 용어입니다. 그러나 그렇습니다. COM 대리인은이 문제를 해결하기 위해 더 쉽게 도울 수 있습니다. 시스템 대리를 사용할 수 있다면 라이브러리가 잘 설계되었을 때 확률은 거의 항상 높습니다. 그런 다음 레지스트리 키를 64 비트 키로 복사하고 대리 키를 사용하기 위해 몇 가지를 수정해야합니다. 당신은 모든 코드를 작성합니다. MSDN 시작 페이지 is here. 라이브러리가 교차 아파트 마샬링을 지원하지 않는 경우

그것은 작동하지 않습니다. 만약 당신이 잘 모르겠다면 다음 작업자 스레드에서 라이브러리 함수를 호출 해보십시오. 그것이 작동하지 않는다면 노력하지 마십시오. 그리고이 라이브러리가 버그를 일으키기 쉬운 경우, "out-of-process"시나리오에서 불확실한 결과를 얻는다면 "더 나은"것을 잃을 것입니다. 속도가 문제가 될 수 있으며 out-of-process 호출은 많은 오버 헤드가 있습니다. 그러나 당신은 그 어느 한쪽으로 붙어 있습니다. 지원을 위해 도서관 소유주에게 연락하여 SO 추측 대신 좋은 답변을 얻을 수 있습니다.