|
|
|
Удаление метода COM-интерфейса
|
|||
|---|---|---|---|
|
#18+
Есть 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); .... Всё компилируется. Создаётся новый TLB. Сервер EXE запускается. Но при запуске клиента падает на первом же вызове COM-функции. Что надо ещё удалить или исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:57 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341154]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 297ms |

| 0 / 0 |
