Запуск диалога C # из неуправляемой M ++ c ++ active xll - PullRequest
1 голос
/ 03 марта 2009

Мне сказали написать диалог на C #, который должен быть создан из неуправляемой библиотеки C ++. Мы делаем это в других местах нашего кода, просто добавляя управляемый класс C ++ в проект C ++, а затем вызывая C # dll из управляемого класса C ++. Однако я считаю, что это не работает для меня, откуда я должен это сделать. Я думаю, потому что c ++ dll - это проект MFCActiveX. Как только я установлю clr для любого файла в этом проекте, он больше не будет правильно регистрироваться. Когда я пытаюсь зарегистрировать его, я получаю три ошибки, а затем сообщение, которое он зарегистрировал. Однако, когда я пытаюсь использовать его, я получаю 0x80040111 «ClassFactory не может предоставить запрошенный класс» ошибку. Если у кого-то есть идея, в чем проблема, я был бы очень признателен. Мне нужно либо выполнить это (желательно), либо доказать, что это невозможно.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 марта 2009

Я не вижу, как проект MFCActiveX помешал бы вам создать класс C # таким способом. Если это просто не позволяет добавить управляемый класс.

Если вы не можете заставить работать управляемый класс C ++, другой вариант - использовать COM. Можно зарегистрировать фабрику сортов в проекте C # как COM-объект. Скажи ему следующий интерфейс

[ComVisible(true)]
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")]
public interface IDialogFactory {
  void Create(); 
}

Вы также должны создать класс поддержки. Но тогда вы можете зарегистрировать управляемую сборку и использовать COM для доступа к ней.

0 голосов
/ 03 марта 2009

Теперь вы должны зарегистрировать его с помощью «regasm» вместо «regsvr32».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...