2010-03-11 29 views
1

我必須構建COM庫(DLL)的OEM版本。 有沒有人知道一個工具(資源黑客),它可能會取代我的一些界面GUID後建立時間?更改COM DLL的接口GUID(資源補丁)

我只想構建和測試一個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 
} 

它不侷限於資源的編輯,你必須真正打補丁的二值圖像的靜態數據,並沒有可能工具將能夠自動爲您做到這一點。

既然你有完整的來源,你最好的選擇就是重建二進制文件。