|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Добрый день. Есть задача: создать на VB6 собственную библиотеку процедур а функций, которые будут использоваться в нескольких проектах. Так, чтобы не ссылаться на библиотеку через References. Создаю проект MyDlls.dll как ActiveX.dll, размещаю там нужные функции, регистрирую MyDlls.dll в реестре. В нужном проекте объявляю например Public Declare Function OnlyCislo Lib "C:\MyDlls.dll" (znac As String) As String При попытке вызова функции p = OnlyCislo("d56") в нужном проекте выскакивает ошибка Can't find dll entry point OnlyCislo in C:\MyDlls.dll Что делаю не так ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 14:24 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Tavocer чтобы не ссылаться на библиотеку через References Tavocer Создаю проект MyDlls.dll как ActiveX.dll ActiveX DLL/EXE это как раз тип проекта для создания COM DLL (в реестре регистрируется библиотека типов) и в конечном итоге она появляется в списке References. Чтобы не ссылаться через References, можно использовать функцию CreateObject, которая создаёт объект через позднее связывание. DLL-ки, которые объявляются как Tavocer Public Declare Function ... штатно создать нельзя. Нештатно можно, но с некоторыми ухищрениями и шаманством. Судя по теме, у вас опыта мало и поэтому не рекомендую даже начинать в этом направлении копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 22:00 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
VSVLAD, Да, через позднее связывание пробовал еще раньше, Dim MyObject As Object Set MyObject = CreateObject("C:\MyDlls.dll") выдает ошибку ActiveX component can't create object. Set MyObject = CreateObject("Outlook.Application") например отлично работает. "C:\MyDlls.dll" это просто пример, на самом деле MyDlls.dll находится в сетевой папке, в реестре регистрируется, при объявлении в References (раннее связывание) работает. Но надо без References ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 23:52 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Tavocer, есть контакт) Set MyObject = CreateObject("MyDlls.NajitPaths") ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 00:10 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Еще вопрос. К библиотеке MyDlls.dll обращаются программы с нескольких компьютеров в сети. Библиотека находится в сетевой папке, и должна быть зарегистрирована regsvr32 на каждом компьютере, с котрого к ней обращаются программы, ведь так? И при позднем связывании. Тогда при изменении библиотеки MyDlls.dll нужно ее перерегистрировать снова на каждом компе? Иначе выскакивает ошибка Automation Error. А как добиться, чтобы не надо было перерегистрировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 11:27 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Tavocer, Да, надо перерегистрировать. Но никто не запрещает отлавливать ошибку и программно выполнить регистрацию компонента повторно. Лучший вариант, это сравнение версии файла из сетевой папки и её копирование в локальную и там выполнять регистрацию. Можно принудительно при запуске программы выполнять регистрацию. Выполнять можно либо через выполнение regsvr32.exe, либо через функцию, наподобие такой: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2022, 12:46 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
VSVLAD, спасибо. Проблема, что пользватели на компах не являются администраторами, можно ли это обойти программно? Вот нашел https://www.cyberforum.ru/visual-basic/thread649325.html , но как то сложно... Можно сюда вставлять ссылки на другие форумы? Если нет, поправьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 18:49 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Tavocer, На ScriptCodding сайте как-то обсуждалось, чтобы использовать COM компонент без регистрации, на деле использовался в скриптах VBS (WSH). Погуглите по этой теме. Но в вашем случае наверное не подойдёт. Есть статья у MS как настроить использование компонента без регистрации. Способ через правку реестра, ну... так себе. Если конечно сможете автоматизировать подготовку файла для заливки - то ок, в противном случае guid, clisd руками править дело сложное и можно ошибок наделать https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/april/simplify-app-deployment-with-clickonce-and-registration-free-com Если задачу глубже покажете, может есть способ проще сделать. Первоначально речи о том, что прав у пользователей нет не было. Может проще будет какую-то часть на .NET перебросить ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 19:34 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Для автоматической регистрации COM объектов без админских прав, можно использовать специально созданный манифест. Который прописывается в .RES файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 22:29 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
+ ещё рекомендую прочитать по теме "Project Compatibility" и "Binary Compatibility". При компиляции новой версии потребуется выставлять бинарную совместимость в свойствах проекта (при создании AcitveX DLL). В таком случае компилятор не будет генерировать новые идентификаторы интерфейса. В противном случае все старые ваши приложения будут падать в ошибку при запуске. Потребуется их перекомпиляция. А в случае с Reg файлом (как описано в том способе) потребуется его полная перегенерация, т.к. без выставленной совместимости каждый раз будет создаваться новые идентификаторы. Использование позднего связывания может решить эту "проблему", но частично. Если интерфейс не будет меняться (не будет переименование методов, изменения количества и типов аргументов у метода), то должно всё заработать без проблем. Если потребуется новая версия метода, тогда придётся создавать ещё один класс, например, Имяv2/Имяv3/Имяv4 и там реализовывать новую функциональность. Чтобы ранние приложения не пришлось перекомпилировать. Опять же всё зависит от количество таких приложений-клиентов, трудности их обновлять и т.д. Возможно VB6 в данном случае не лучший выбор будет, особенно если делать "новую разработку" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 22:40 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Правильно посоветовали тут Reg-Free манифест. Смотрите утилиту UMMM которая почти автоматом делает подобный манифест. А вообще стандартные DLL тоже можно делать, но в данном случае это не нужно - решается через манифест. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 00:28 |
|
Как в VB6 создать собственную библиотеку dll процедур а функций?
|
|||
---|---|---|---|
#18+
Tavocer Еще вопрос. К библиотеке MyDlls.dll обращаются программы с нескольких компьютеров в сети. Библиотека находится в сетевой папке, Вам наверное web-service нужен, а не это вот всё ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 14:22 |
|
|
start [/forum/topic.php?fid=60&msg=40130737&tid=2154685]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 412ms |
0 / 0 |