2010-03-11 3 views
1

COM 라이브러리 (DLL)의 OEM 버전을 빌드해야합니다. 빌드 후 일부 인터페이스 가이드를 대체 할 수있는 도구 (소스 코드 해커)를 아는 사람이 있습니까?COM DLL의 인터페이스 guids 변경 (패치 재 공급)

하나의 DLL을 만들고 테스트 한 후 나중에 OEM 버전을 생성하려고합니다.

답변

1

내가 아는 도구가 없습니다. 자동화 된 빌드 프로세스를 사용하여 실제로 다른 GUID로 dll을 빌드 할 수 있습니다.

+0

우리가 지금하는 일입니다. 그러나이를 통해 우리는 각 OEM 버전을 구축하고 테스트해야합니다. – ndee

0

컴파일 된 바이너리에서 인터페이스 ID를 바꾸는 것은 쉽지 않습니다. 그들은 보통 하드 코딩되고 컴파일러는 정적 스토리지에이를 할당하고 정적 링키지를 가지고있어 문제를 찾을 수 있습니다. QueryInterface()이 일반적으로 구현되는 방법을 기억하십니까?

HRESULT CImpl::QueryInterface(IID& iid, void** result) 
{ 
    if(iid == __uuidof(IInterfaceThisClassImplements1)) { 
     *result = static_cast<IInterfaceThisClassImplements1*>(this); 
    } else { 
     ///same stuff for other interfaces 
    } 
    //call AddRef() if succeeded 
} 

그것은 편집 자원에 국한되지, 당신은 실제로 바이너리 이미지의 정적 데이터를 패치 할 가능성 어떤 도구를 사용하면 자동으로이 작업을 수행 할 수 없습니다.

전체 소스가 있으므로 최선의 방법은 바이너리를 다시 작성하는 것입니다.