Прежде всего, я новичок в COM, и в настоящее время довольно смущен. Я прочитал много документации по COM на MSDN и в Интернете, но многие из них кажутся устаревшими и чрезмерно сложными.
Вот что я считаю необходимым, чтобы заставить его работать. Это еще не так, поэтому я уверен, что что-то упустил, но, давая свой рецепт, я надеюсь, что кто-то может определить проблему:
Благодаря ответам я обновил вопрос, чтобы отразить объединенное решение.
Попробуйте выполнить следующие действия:
C:\Windows\SysWOW64\regsvr32.exe c:\full-path\ComLib.Interop.dll
Посмотрите, дойдете ли вы до 7. Думаю, это должно сработать.
Обратите внимание, что вам нужна только регистрация на компьютере разработчика. Изолированный COM должен работать везде.
Вы, вероятно, ошиблись на шаге 2, учитывая, что не получили ошибку сборки. Мастер дает вам более одного выбора для Добрый класса вы добавляете. По умолчанию выбрано «C ++ class», вместо этого вам нужно выбрать ATL + «ATL Simple Object».
Окно Class View теперь показывает два добавление типов, интерфейс IInteropDemo и класс CInteropDemo, который реализует интерфейс. Вы затем щелкните правой кнопкой мыши интерфейс введите (не класс) и используйте «Добавить метод». Теперь вы также можете взглянуть на файл IDL в проекте, он должен выглядеть примерно так:
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(CBA0D899-2F4C-4F1D-A935-C80CB981C153),
dual,
nonextensible,
pointer_default(unique)
]
interface IInteropDemo : IDispatch{
[id(1)] HRESULT Method();
};
[
uuid(ED14ACED-4FF9-4144-B302-CC48C481F28B),
version(1.0),
]
library ATLProject4Lib
{
importlib("stdole2.tlb");
[
uuid(8543642F-9927-451C-9784-6A7774418299)
]
coclass InteropDemo
{
[default] interface IInteropDemo;
};
};
Этого достаточно, чтобы его построить. Что должно произойти сбой в любой современной версии Windows, UAC препятствует регистрации COM-сервера. Для чего требуется шаг № 0: Запустите Visual Studio, щелкнув правой кнопкой мыши ярлык и выбрав «Запуск от имени администратора».