У меня есть COM-DLL, написанная на неуправляемом C++ и скомпилированная с помощью VS 2010. Я могу зарегистрировать DLL с помощью regsvr32 и вызывать ее через VBscript.
Когда я пытаюсь добавить ссылку на него, при создании клиента С# я не вижу COM-объект, указанный на вкладке «Добавить ссылку» -> «COM». Если я вручную перехожу к DLL и пытаюсь выбрать ее, он говорит, что DLL не является допустимой сборкой или компонентом COM.
Теперь я могу использовать инструмент tlbimp для создания DLL-библиотеки взаимодействия и использовать ее для добавления в качестве ссылки на мой клиент C#. И все работает нормально.
Мои вопросы:
- Почему исходный COM не указан на вкладке COM в диалоговом окне «Добавить ссылку», если он зарегистрирован через regsvr32?
- Почему VS IDE считает, что это недопустимый COM, когда я могу вызвать его из собственного кода VBScript и C++?
- Что именно делает tlbimp, чего не может сделать IDE?
- Что мне нужно прочитать дальше, чтобы лучше понять библиотеки типов и интероперабельность?