39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
|||||||||||
1 | |||||||||||
Регистрация библиотеки как ActiveX03.11.2018, 17:56. Показов 4265. Ответов 9
Метки нет (Все метки)
Всем привет, есть проблема в регистрации простой библиотеки как COM компонента
я не понимаю в чем проблема. Приведу код и сразу скажу делал как в справочнике msdn и как в codeproject Дошло до того что при компиляции возникает ошибка вида : Код
Error The assembly "E:\Study\...\...\...\Std_Lib\Std_Lib\bin\Release\StudentX.dll" could not be converted to a type library. Type library exporter encountered an error while processing 'StudentX.TStudents, StudentX'. Error: Element not found.Std_Lib Код
C:\Windows\Microsoft.NET\Framework\v2.0.50727>regasm /codebase e:\StudentX.dll Но там тоже выходит ошибка Код
RegAsm : error RA0000 : Failed to load 'e:\StudentX.dll' because it is not a valid .NET assembly Даже в видео это сказано
Код
RegAsm : error RA0000 : Failed to load 'e:\StudentX.dll' because it is not a valid .NET assembly
0
|
03.11.2018, 17:56 | |
Ответы с готовыми решениями:
9
Установочные регистрирующий библиотеки ActiveX Регистрация библиотеки ActiveX DLL Регистрация библиотеки классов, как COM объекта и ее дальнейшее использование регистрация ActiveX |
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,137
|
|
03.11.2018, 18:56 | 2 |
Смущает, что вы запускаете regasm из папки со второй версией фреймворка, а сама сборка скорее всего написана под четвертую или выше.
Попробуйте запускать его из соответствующей папки, а еще лучше — из командной строки Студии.
1
|
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
|
04.11.2018, 12:33 [ТС] | 3 |
К стати да что то я не то взял, списал как в гайде а он же древний, но теперь выходит другая ошибка
Код
C:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm /codebase e:\StudentX.dll Microsoft .NET Framework Assembly Registration Utility version 4.7.3062.0 for Microsoft .NET Framework version 4.7.3062.0 Copyright (C) Microsoft Corporation. All rights reserved. RegAsm : warning RA0000 : No types were registered А в консольке студии я не знаю что печатать никогда не работал с ней
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,137
|
|
04.11.2018, 12:39 | 4 |
У вас в сборке два класса: Student с модификатором доступа internal и TStudents без конструктора по умолчанию.
Попробуйте пометить Student как public и добавить в TStudents конструктор без параметров. Печатайте то же самое, только без полного пути к программам — студия сама настроит среду выполнения с нужными папками.
0
|
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
||||||
04.11.2018, 12:46 [ТС] | 5 | |||||
Сейчас пересоздал проект, скопировал и оставил атрибудты только у наследованного класса контейнера TStudents
Теперь компиляция(F6) прошла успешно но выдает ошибку при запуске программы на F5 Код
Error The assembly "E:\Study\..\..\StudentX\StudentX\bin\Debug\StudentX.dll" could not be converted to a type library. Type library exporter encountered an error while processing 'StudentX.TStudents, StudentX'. Error: Element not found. StudentX
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,137
|
|
04.11.2018, 12:49 | 6 |
Сообщение было отмечено Deimos_ как решение
Решение
Deimos_, у вас класс TStudents использует тип Student, который невидим для COM.
Либо не используйте тип Student в TStudents, либо регистрируйте его тоже.
1
|
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
|||||||||||
04.11.2018, 13:23 [ТС] | 7 | ||||||||||
Да сделал все публичным и создал конструктор по умолчанию для TStudents теперь он просит что бы классы были статичными сейчас с этим разберусь и возможно заработает
Код
..\..\Release\StudentX.dll". COM register function must be static. Сейчас сдела статичные все методы и поля, и эмм после компиляции выходит ошибка Код
StudentX.dll". COM register function must have a System.Type parameter and a void return type. Добавлено через 1 минуту
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,137
|
|
04.11.2018, 13:23 | 8 |
Не классы, а методы, помеченные атрибутом ComRegisterFunction.
Кстати, зачем они им помечены?
1
|
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
||||||
04.11.2018, 13:49 [ТС] | 9 | |||||
Я незнаю зачем пометил но где то нашел и так сделал )
Добавлено через 3 минуты Короче убрал все ComRegisterFunction вернул все наместо опять пришла эта ошибка Error: Element not found. StudentX хотя как вы и сказали я создал констуктор по умолчанию и сделал все публичным Добавлено через 5 минут Слава БОГАМ !!! Код
C:\Windows\Microsoft.NET\Framework\v4.0.30319>RegAsm.exe e:\StudentX.dll Microsoft .NET Framework Assembly Registration Utility version 4.7.3062.0 for Microsoft .NET Framework version 4.7.3062.0 Copyright (C) Microsoft Corporation. All rights reserved. Types registered successfully
0
|
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
|
||||||
04.11.2018, 13:52 [ТС] | 10 | |||||
А Вот так я его использовал и вроде подгрузил Ура.
0
|
04.11.2018, 13:52 | |
04.11.2018, 13:52 | |
Помогаю со студенческими работами здесь
10
Автоматическая регистрация ACTIVEX ActiveX регистрация элемента Регистрация ActiveX компонента Регистрация ActiveX (.NET , ATL) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |