| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Код функции DllRegisterServer в проекте библиотеки DLL на VB

Код функции DllRegisterServer в проекте библиотеки DLL на VB

Ответ
Поиск в этой теме
Непрочитано 27.10.2021, 05:30
Код функции DllRegisterServer в проекте библиотеки DLL на VB
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 1,079

Помогите создать функцию DllRegisterServer в проекте библиотеки DLL на Visual Basic VS2019.
Переместил некоторые функции из медленного VBA в библиотеку DLL написанную на Visual Basic VS2019.
Скомпилировал библиотеку. При регистрации библиотеки командой Regsrv32 появляется ошибка: "Модуль загружен, но точка входа DLLRegisterServer не найдена".
Посмотрел в инете, оказывается внутри самой библиотеки должна быть такая функция DLLRegisterServer.
Задача: после выполнения команды "regsvr32 Библиотека.dll" эта самая библиотека dll должна появиться в окне Tools -> References в VBA Excel.
Что это за функция DllRegisterServer и что надо прописывать в этой функции?

Последний раз редактировалось МишаИнженер, 27.10.2021 в 05:57.
Просмотров: 3811
 
Непрочитано 27.10.2021, 13:10
#21
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


VB.NET? Можно наверно
trir вне форума  
 
Автор темы   Непрочитано 27.10.2021, 13:52
#22
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Получилось создать библиотеку в Visual Basic!
При создании библиотеки надо выбирать шаблон для VB: "Библиотека классов (.NET Framework) Проект для создания библиотеки классов VB (.dll)"
Вот всего лишь несколько строк очень понятных и без лишних цифр:
Код:
[Выделить все]
Namespace МатемФункции
    Public Interface IClСуммаVB
        Function Сумма(A As Integer, B As Integer)
        Function Квадрат(A As Integer)
    End Interface

    Public Class ClСуммаVB
        Public Function Сумма(A As Integer, B As Integer)
            Сумма = A + B
        End Function
        Public Function Квадрат(A As Integer)
            Квадрат = A ^ 2
        End Function
    End Class
End Namespace
Можно и без NameSpase сделать в общем (все работает)!
Однако в окне Object Browser Excel появилось два класса этой библиотеки:
CLСуммаVBA и ICLСуммаVB
Класс CLСуммаVB не имеет методов (пустой)
А класс (интерфейса) ICLСуммаVB имеет два метода: Сумма и Квадрат
И эти методы работают!
Библиотека также имеет расширение tlb
Можно ли убрать лишнее описание класса из окна Object Browser Excel?
При попытке присвоить интерфейсу и классу разные имена начинают появляться ошибки при компиляции или пропадают методы у Public класса
Как можно решить эту проблему видимости лишнего класса?

----- добавлено через ~30 мин. -----
В общем в Visual Basic код библиотеки выглядит гораздо проще!
Однако методы библиотеки в окне Object Browser VBA Excel выглядят немного запутанными.
Если не открывать окно Object Browser то программу с использованием этой библиотеки написать можно, но описание методов в окне Object Browser понять может быть очень сложно! Например:
Код библиотеки в Visual Studio 2019:
Код:
[Выделить все]
Public Interface IИнтерфейс
    Function Сумма(A As Integer, B As Integer)
    Function Квадрат(A As Integer)
End Interface

Public Class Cl_СуммаVB
    Function Сумма(A As Integer, B As Integer)
        Сумма = A + B
    End Function
    Function Квадрат(A As Integer)
        Квадрат = A ^ 2
    End Function
End Class
Функции для вызова методов в Excel
Код:
[Выделить все]
Private Sub ComButton3_Сумма_Click()
Dim objСумма As Cl_СуммаVB, dСум As Double
   Set objСумма = New Cl_СуммаVB
   dСум = objСумма.Сумма(8, 8)
   MsgBox "Сумма равна " & dСум
End Sub

Private Sub ComButton4_Квадрат_Click()
Dim objСумма As Cl_СуммаVB, dКвадрик As Double
   Set objСумма = New Cl_СуммаVB
   dКвадрик = objСумма.Квадрат(8)
   MsgBox "Квадрат равен " & dКвадрик
End Sub
Все работает!
Однако если мы заглянем в окно Object Browser в VBA Excel то увидим что у библиотеки есть два класса:
1) CL_СуммаVB (пустой, методов не видно)
2) IИнтерфейс (имеет два метода: Сумма и Квадрат)
В программе VBA создается класс копия класса Cl_СуммаVB
Код:
[Выделить все]
Set objСумма = New Cl_СуммаVB
который не имеет медов в окне Object Browser
Однако в коде программы VBA переменная objСумма имеет методы и эти методы успешно работают!
Как можно понять и немного исправить данную ситуацию?
Желательно чтобы в окне Object Browser было не видно класса интерфейса IИнтерфейс, а была просто ссылка на класс CL_СуммаVB с его методами.
Надо в окне Object Browser VBA Excel перетащить методы из класса IИнтерфейс в класс CL_СуммаVB, и класс IИнтерфейс сделать невидимым.
Как это сделать?
МишаИнженер вне форума  
 
Непрочитано 27.10.2021, 14:34
#23
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


по идее атрибуты, которые ты убрал и решали эти проблемы
trir вне форума  
 
Автор темы   Непрочитано 27.10.2021, 16:02
#24
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Это
Код:
[Выделить все]
Namespace МатемФункции
End Namespace
Только надо сделать отдельные Namespace для Интерфейса и для Класса?
МишаИнженер вне форума  
 
Непрочитано 27.10.2021, 23:20
#25
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


нет
trir вне форума  
 
Непрочитано 27.10.2021, 23:57
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855


https://docs.microsoft.com/ru-ru/dot...ts/attributes/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Код функции DllRegisterServer в проекте библиотеки DLL на VB

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать масштабирование с предпросмотром (как в дефолтной функции автокада) valerik88 LISP 24 24.07.2016 20:52
Функции формы элемента. Обясните пожалуйста Nursul85 Расчетные программы 4 23.11.2015 09:12
Autolisp многократный запуск функции protorgovec LISP 3 14.09.2015 08:31
Интеллектуальные средства для электронной библиотеки Сергей Ружинский Прочее. Программное обеспечение 8 03.12.2013 17:22
Странности функции rtos FWA Программирование 2 16.02.2005 11:37