Запрос интерфейса для интерфейса не удалось - PullRequest
1 голос
/ 31 марта 2011

Я использую COM-сборку с взаимодействием в своем коде 1.1 VB.NET, и когда я пытаюсь установить свойство класса, я получаю ошибку INvalidCastException с сообщением «QueryInterface for Interface xxx failed». также попробуйте зарегистрировать com-файл, используя regsvr32 и метод regasm .. ничего не работает возвращает ошибку, это не допустимая сборка .NET ... пожалуйста, помогите мне эксперты

http://www.filefactory.com/file/ca7a55e/n/error.jpg

Я приложил скриншот с ошибкой .. interop.peachwserver.dll - это объект com .. Smtpmailer - проект ... peachtreeloginsingleton - это имя класса, которое наследует класс входа в систему от com

1 Ответ

1 голос
/ 31 марта 2011

Вы не можете получить это исключение, если сервер не зарегистрирован. Если вы считаете, что у вас возникли проблемы с регистрацией, обратитесь к поставщику или автору компонента, чтобы узнать, как выглядит соответствующая процедура. Установщик, который позаботится об этом, является нормой.

QueryInterface завершится ошибкой, если библиотека типов, использованная вами для создания библиотеки взаимодействия, не соответствует фактической установленной версии COM-сервера. Довольно типичный случай DLL Hell. Угловой случай пытается использовать сервер в потоке. Это требует, чтобы прокси / заглушка для сервера была зарегистрирована. Который обычно недоступен. Единственный обходной путь - это только вызов методов в потоке, в котором был создан объект. Этот сценарий также лучше всего проверить у поставщика компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...