Не удалось создать компонент AxHost System.Runtime.InteropServices.COMException (0x80029C4A) - PullRequest
1 голос
/ 20 июля 2011

Я создал .Net usercontrol в C #.это графический элемент управления с текстовым полем и списком.Теперь я хочу использовать этот элемент управления в устаревшем приложении VC ++. (Родной двоичный код).означает, что я хочу вызывать управляющий код из неуправляемого кода.

предположим, что мое usercontrol имя - xyz.dll.Я сгенерировал файл tlb с помощью tlbexp.exe, а затем зарегистрировал этот элемент управления с помощью приведенной ниже командной строки.regasm xyz.dll /tlb:"C:\xyz.tlb "/ codebase

Я проверил свой элемент управления с помощью« Контейнер тестирования элемента управления Activex »(откройте studio 2005 и перейдите в меню« Инструменты »)..Net usercontrol для этого инструмента, и он работал нормально.

, затем я создал пример приложения окна C #.Под Toolbox я щелкаю правой кнопкой мыши и выбираю «Выбрать элементы» и выбираю вкладку «COM компонент».и выберите мой элемент управления xyz.dll.Теперь этот элемент управления добавлен в панель инструментов.

Но когда я перетащил этот элемент управления в окно, я получил ошибку ниже.Не удалось создать компонент AxHost.Следующее сообщение об ошибке:

'System.Runtime.InteropServices.COMException (0x80029C4A): Ошибка загрузки библиотеки типов / DLL.(Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) в System.Windows.Forms.Design.DocumentDesigner.AxToolboxItem.CreateComponentsCore (хост IDesignerHost) в ID-узле System.Drawing.Design.Design.ToolboxItem.CreateComponents (хост IDesignerHost, IDictionary defaultValues) в System.Windows.Forms.Design.OleDragDropHandler.CreateTool (инструмент ToolboxItem, родительский элемент управления, Int32 x, Int32 y, ширина Int32, высота Int32, логическая переменная типа Toolbox, Boolean hasLapSignSense для хранения, Boolean hasLapSignS).e) '.

также дает мне указатель на то, «как использовать .net usercontrol в унаследованном приложении C #»

Ответы [ 2 ]

1 голос
/ 19 декабря 2013

Введите в командной строке следующее: regsvr32 "C:\Program Files\VideoLAN\VLC\axvlc.dll" зарегистрировать файл dll

0 голосов
/ 20 июля 2011

Недостаточно информации, но мое предположение пока:

Элемент управления разработан в .NET 4, а устаревшее приложение C # - в .NET 2. .NET 4 может смешивать .NET-версию в одном и том же процессе, но .NET 2 не может, поэтому я подозреваю, что для решения этой проблемы вам нужно разработать / собрать элемент управления в .NET 2, чтобы его можно было использовать в .NET 2 & 4 .

РЕДАКТИРОВАТЬ (после комментария о .NET 3.5):

Вам необходимо зарегистрировать элемент управления, запустив regsvr32 .

РЕДАКТИРОВАТЬ 2:
regsvr32 xyz.dll ИЛИ regsvr32 /i xyz.dll

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