Member 2181119 Ответов: 1

Как использовать компонент ATL COM, разработанный с использованием C++ в WCF REST services на C#?


Я разработал ATL COM DLL в visual c++. Я зарегистрировал dll и добавил ссылку на dll в c++.Я пытаюсь использовать C++ COM dll в WCF REST services на c#,но получаю следующую ошибку:

Невозможно привести COM-объект типа ' System.__ComObject на интерфейс ProVisionCOMDemoLib тип '.ReadDATFile'. Эта операция не удалась, так как вызов QueryInterface на COM-компоненте для интерфейса с IID '{91820B46-B3FD-41FE-9A75-45A72424F480}' не удался из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Пожалуйста, помогите мне решить эту ошибку.Пожалуйста, предложите несколько способов вызова c++ com dll в WCF Rest services на c#.

Спасибо и с уважением
Вивек

Что я уже пробовал:

Следующий код используется для вызова com c++ dll в WCF rest web services на языке c#:
object sResult;
ProVisionCOMDemoLib.ReadDATFile objTest = new ProVisionCOMDemoLib.ReadDATFile();
objTest.ReadDATFile(mFileName, out sResult);

David 'dex' Schwartz

У вас есть в C# с правильной ссылкой для входа библиотеки DLL?
Можете ли вы отладить вызов QueryInterface в вашем ReadDATFile возражать?

Пожалуйста, разместите следующую информацию.

Холостой ход для ReadDATFile объект.
ReadDATFile заголовочный файл с объявлением класса, всеми интерфейсами и связанными с COM объявлениями макросов.
Если у вас есть клиент QueryInterface реализация вы должны опубликовать и это тоже.

1 Ответов

Рейтинг:
0

KarstenK

У вас есть некоторые проблемы с именованием в вашем коде. Проверьте имя и GUID зарегистрированного компонента, который находится в реестре.

Имя и GUID должны быть уникальными, но ваше имя звучит как из какого-то примера кода. Изменить его и rebiuld, зарегистрируйтесь. Ком иногда бывает занозой в заднице ;-)