Я пытаюсь создать оболочку C # для имеющегося у меня COM-объекта (с именем SC_COM.dll), но у меня возникают некоторые проблемы, связанные с Visual Studio 2008 (работает под управлением Vista). Мне нужно сделать это без регистрации в COM DLL - я использую файл манифеста, чтобы Visual Studio узнала о SC_COM.dll, и это, похоже, работает. Я использовал TblImp.exe для создания библиотеки типов (SC_COMtlb.dll), на которую я ссылаюсь в Visual Studio 2008, чтобы я мог выполнить раннее связывание с нужной мне DLL. Библиотеки DLL находятся в одном каталоге с манифестом и исполняемым файлом.
Вот проблема: когда я создаю экземпляр объекта и пытаюсь вызвать один из его методов в C #, он выдает следующую ошибку:
Обнаружена ошибка: невозможно преобразовать COM-объект типа «SC_COMtlb.SCAccessObjClass» в тип интерфейса «SC_COMtlb.ISCUploader». Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{C677308A-AC0F-427D-889A-47E5DC990138}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .
Я не совсем уверен, что означает эта ошибка - я провел поиск по коду ошибки, и, похоже, это относительно общая ошибка C #. Так что я собираюсь связать COM-объект здесь неправильно или есть какой-то другой важный шаг, который я могу пропустить?
Вероятно, я должен отметить, что я не совсем уверен, как созданная мной библиотека типов (S \ C_COMtlb.dll) знает, где на самом деле находится COM DLL, так как она не зарегистрирована в системе - я предполагаю, что она просто выглядит в том же каталоге. Может ли это быть проблемой, и если да, то как мне лучше связать их?