Как получить больше информации об отладке при сбоях интерфейса COM IDispatch - PullRequest
0 голосов
/ 17 ноября 2011

Я реализовал интерфейс ac # IDispatch, чтобы позволить позднее связывание с моим управляемым кодом.Кажется, работает, когда вызывается некоторыми сторонними программами, но не другими.Он не превращается в раздел управляемого кода для вывода отладочной информации.Вполне возможно, что некоторые описания интерфейса (которые я конвертировал из c ++) неверны, поэтому это не влияет на код.Можно ли определить, какие методы пытается вызвать стороннее программное обеспечение?

Спасибо

РЕДАКТИРОВАТЬ: Чтобы попытаться сделать вопрос менее размытым, я опишу симптомы.Я написал тестовый пример, который вызывает библиотеку IDispatch нормально.Он работает с одним сторонним программным обеспечением.Когда я запускаю его на втором, он выдает ошибку без информации о том, какую функцию он пытался вызвать, когда произошла ошибка.В интерфейсе около 100 функций, поэтому единственная опция, о которой я мог подумать, была предложена - попытаться вызвать их все из некоторого тестового кода.Обе части стороннего программного обеспечения являются неуправляемым кодом.

1 Ответ

1 голос
/ 17 ноября 2011

Если вы подозреваете, что проблема в вашем интерфейсе C #, то, возможно, вы могли бы создать прокси-библиотеку в C ++ и вставить ее между клиентом и вашим сервером.Прокси-сервер просто реализует IDispatch и перенаправляет все вызовы Invoke на сервер и регистрирует всю активность.Конечно, это зависит от правильности определения интерфейса C ++, но вы, кажется, уверены в этом.

Но прежде чем приступить к этой проблеме, дважды проверьте, что проблема не является чем-то более простым.Ваше описание намекает на то, что проблема очевидна не на вашем компьютере, а на компьютере клиента, поэтому ваш сервер правильно зарегистрирован на этом компьютере?

...