Изменение направляющих интерфейса COM DLL (исправление ресурса) - PullRequest
1 голос
/ 11 марта 2010

Мне нужно собрать OEM-версии библиотеки COM (DLL). Кто-нибудь знает инструмент (хакер ресурсов), который может заменить некоторые из моих руководств по интерфейсу после сборки?

Я просто хочу собрать и протестировать одну DLL и впоследствии сгенерировать OEM-версии.

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Нет инструмента, о котором я знаю. Вы можете использовать автоматизированный процесс сборки для фактической сборки dll # с разными GUID.

0 голосов
/ 12 марта 2010

Замена идентификаторов интерфейса в скомпилированном двоичном файле не так просто. Они обычно жестко запрограммированы, и компилятор размещает их в статическом хранилище, и они могут даже иметь статическую связь, поэтому у вас будут проблемы с их поиском. Помните, как обычно реализуется 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
}

Это не ограничивается редактированием ресурсов, вы должны на самом деле исправлять статические данные двоичного изображения, и, вероятно, ни один инструмент не сможет сделать это автоматически для вас.

Поскольку у вас есть полный исходный код, лучше всего просто перестроить двоичный файл.

...