2010-04-18 3 views
3

x32에서 컴파일 된 lib를 상속 받았으며 x64로 컴파일 할 수 없습니다. x32 프로세스를 lib에 넣고 x64 프로세스에서 CreateProcess 함수 win API를 호출하여 실행할 수 있다고 생각합니다. 그러면 x64 프로세스에 대한 API lib x32 인터페이스간에 데이터를 전송하기 위해 공유 메모리가 사용됩니다.lib를 x64로 변환하지 않고 x32 lib를 x64 프로세스와 통합하는 가장 좋은 방법은 무엇입니까?

나는 뭔가를보고 싶습니다 (그 모양이 매우 복잡합니다)?

+0

프로세스에 실제로 64 비트가 있어야합니까? –

+0

예, 3Gbyte 메모리 할당이 필요합니다 – user294031

답변

2

32bit COM + 서버로 공개하고 64bit 앱에서 소비 할 수 있다고 생각합니다. 그것은 운영 체제에 의해 호스팅되는 별도의 프로세스가 될 것입니다. 그것은 나에게 공유 메모리 등등보다 훨씬 쉬워 보입니다. 그냥 생각 만 해본 적이 있습니다.

+0

아무 것도 ........ – user294031

3

대답은 직접 할 수 없다는 것입니다. 프로세스는 32 비트 또는 64 비트입니다. 64 비트 프로세스는 32 비트 코드를로드 할 수 없습니다.

예, 당신은 32 비트 프로세스에서 32 비트 코드를 실행하고 당신의 64 비트 프로세스 사이의 인터페이스의 몇 가지 유형을 사용해야합니다.

코드에 따라 많은 문제가 발생할 수 있습니다.

이 작업을 수행하는 가장 좋은 방법은 COM의 API 세트에 32 비트 코드를 포장하고 64 비트 프로세스에 대한 우리의 PROC의 COM 서버로 실행 가능성이 높습니다. COM은 한 프로세스에서 다른 프로세스로 정보를 마샬링하는 모든 작업을 수행합니다.

당신이 무엇을해도; 이 작업을 수행하는 데 많은 오버 헤드가 있음을 정확히 알고 있어야합니다. 오류 처리는 또 다른 중요한 관심사입니다.

공유 메모리 인터페이스를 직접 개발하지 않는 것이 좋습니다. 인터페이스가 정말 간단하지 않다면 수정하기가 어려울 수 있습니다.

RPC를 직접 사용할 수도 있습니다 (this link 참조).

관련 문제