Я построил DLL .net COM dll (debug x64) на одной машине. У меня есть все настройки и работы там (я вижу это на C: \ Windows \ Micorosft.NET \ assembly и OLEVIEWER).COM .NET DLL не регистрируется в GAC (REGDB_E_CLASSNOTREG)
Я взял dll на другую машину (вместе с файлом .h и .c, сгенерированным из MIDL). Я регистрирую dll в GAC, выполнив следующие шаги: http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html - создать пару ключей, сгенерировать MISL, перестроить сборку из MISL с помощью ключа, а затем добавить его в GAC. Кажется, это в GAC, и я могу попробовать найти его с gacutil/l MyDllName. Однако в моем клиентском приложении, когда я ссылаюсь на него, во время выполнения при вызове CoCreateInstance
я получаю REGDB_E_CLASSNOTREG
(HRESULT). Я не вижу DLL в C: \ Windows \ Microsoft.NET/Assembly или в OLEVIEW.
Я пропустил какие-либо шаги или сделал что-то не так?
Благодаря
Вы никогда не упоминали использование Regasm.exe для регистрации сборки. Вы можете пропустить это на своем компьютере-разработчике, когда вы используете флажок «Регистрация для COM-взаимодействия». Конечно, не на машине пользователя. Использование MIDL довольно странно, это не звучит кошерно. –
, если вы не используете MIDL (как показано в учебнике по адресу http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html), что такое "кошерный" способ сделать это? (Кстати, мой взгляд кишки с использованием MIDL был немного взломан) – Prof
Обычно вы должны использовать директиву #import в программе на C++. –