Моя глобальная цель - создать приложение на основе COM, где клиентская часть - это код C ++, а серверная часть - C #. Это выглядит просто.
Я пытаюсь использовать образец из MSDN:
http://msdn.microsoft.com/en-us/library/aa645738(v=vs.71).aspx
Я делаю решение с двумя проектами (используя VisualStudio2008) и компилирую. хорошо.
Я регистрирую компонент вручную. (Ref1)
Но когда я запускаю клиентское приложение, CoCreateInstance возвращает HRESULT "Класс не зарегистрирован".
на шаге (ref1) я пытаюсь использовать:
1) regasm server.dll /tlb:server.tlb (имена файлов в источнике cpp теперь совместимы по причине) (из MSDN)
2) regasm server.dll /tlb:server.tlb
gacutil / i server.dll
3) regasm / codebase / tlb server.dll
В реестре см. Мой класс, но «значением по умолчанию» для InprocServer является mscore.dll. По сравнению с другими записями реестра, это выглядит как ошибка.
Я попытался отредактировать это значение вручную - безрезультатно.
Но я уверен, этот образец работает! однажды я сделал много разных действий без изменения GUID и ... это работает! Но я меняю GUID, пытаюсь зарегистрироваться - безрезультатно. И я не могу повторить эту ситуацию. Магия ...
Помогите мне, пожалуйста! Мне нужен точный алгоритм без источника изменений (опция) и без ручной работы в реестре (в моем случае это абсолютно невозможно).
// простите, мб мой английский не идеален.