удаление метода COM-интерфейса
От: PavelT100 Россия  
Дата: 19.11.14 17:55
Оценка:
Есть COM-интерфейс в EXE-модуле, написанный на C++.
Клиент, использующий эти методы, написанный на C#.
Увидел, что одна из функций COM-интерфейса не используется на клиенте. Решил её вообе удалить.
Удалил эту функцию из idl-файла.

[
    object,
    uuid(416AF068-2ABF-4F20-BC61-1163A7600433),
    dual,
    nonextensible,
    helpstring("IcomAAAA Interface"),
    pointer_default(unique)
]
interface IWinPharma : IDispatch{
    [id(1), helpstring("method AAAA")] HRESULT AAAA([in] BSTR query, [in] BSTR query_cleanup);  //вот эту строку я удалил
    [id(2), helpstring("method BBBB")] HRESULT BBBB([in] BSTR query);
.....

уменьшил id на 1.

удалил саму функцию из кода C++:

STDMETHOD(AAAA)(BSTR query, BSTR cleanup)
    {
...
    }


На С#-клиенте удалил описание этой функции:
[Guid("416AF068-2ABF-4F20-BC61-1163A7600433")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface IWinPharma
    {
        int AAAA(
            [In, MarshalAs(UnmanagedType.BStr)] string query, 
            [In, MarshalAs(UnmanagedType.BStr)] string query_cleanup);

        void BBBB([In, MarshalAs(UnmanagedType.BStr)] string query);
....


Всё компилируется. Сервер EXE запускается. Но при запуске клиента падает на первом же вызове COM-функции. Что надо ещё удалить или исправить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.