Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/43: Рейтинг темы: голосов - 43, средняя оценка - 4.98
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22

Подключить библиотеку dll

01.03.2017, 09:35. Показов 13331. Ответов 166
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данным диалектом Бейсика не пользуясь, но иногда здесь бываю. Решил немного поучаствовать. Собственно вопрос в следующем: можно ли пользоватся сторонними библиотеками в этом диалекте, насколько сложен процесс использования? Цель - есть своя xll для VBA, можно убрать обертку будет dll, выложу здесь для тех кто много считает, большими числами) (Гугл не спрашивал ибо важно понять, есть целесообразность в данном продукте?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2017, 09:35
Ответы с готовыми решениями:

Не получается подключить библиотеку Unmanaged.dll (Firefox nss3.dll)
Здравствуйте, начал изучать c#, очень понравилась тема декриптования, для начала решил из исходников собрать приложение для декриптования и...

Подключить библиотеку dll
Имеется программа nircmd.exe, которая с помощью батника позволяет выполнять различные комманды К примеру запуск батника NirCmd.exe exec...

Как подключить dll библиотеку?
Здраствуйте, есть такой вопрос, как можно подключить *.dll библиотеку к код блокс или к вижал студио?

166
Эксперт по электронике
7176 / 3352 / 346
Регистрация: 28.10.2011
Сообщений: 13,212
Записей в блоге: 7
05.05.2018, 16:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от The trick Посмотреть сообщение
все довольно просто.
Но не настолько как в VB и его разновидностях.
Нужно знать интерфейс COM объекта, его идентификаторы CLSID и IID и загружать через CoCreateInstance.
Проще загрузить процедурную DLL чем COM, потому что нужен только список функций. Кроме того это кроссплатформенно.
0
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
05.05.2018, 16:49
Цитата Сообщение от locm Посмотреть сообщение
Но не настолько как в VB и его разновидностях.
Очень-очень сложно . Я так понимаю Interface как раз и создан для декларирования интерфейсов.

Цитата Сообщение от locm Посмотреть сообщение
Нужно знать интерфейс COM объекта, его идентификаторы CLSID и IID и загружать через CoCreateInstance.
Это же так сложно...
Во-первых, CLSID можно не знать, а создавать объект по ProgID;
Во-вторых, Pro_grammer скинул тулзу которая автоматом декларирует все константы и интерфейсы;
В-третьих, вместо CoCreateInstance тебе все-рано нужно вызывать пару LoadLibrary/GetProcAddress (по одному на каждую функцию).

Цитата Сообщение от locm Посмотреть сообщение
Проще загрузить процедурную DLL чем COM, потому что нужен только список функций.
Кому проще? Да тут даже список функций не нужен.

Цитата Сообщение от locm Посмотреть сообщение
Кроме того это кроссплатформенно.
Не смешно уже.
0
Эксперт по электронике
7176 / 3352 / 346
Регистрация: 28.10.2011
Сообщений: 13,212
Записей в блоге: 7
05.05.2018, 18:38
Цитата Сообщение от The trick Посмотреть сообщение
вместо CoCreateInstance тебе все-рано нужно вызывать пару LoadLibrary/GetProcAddress (по одному на каждую функцию).
Не обязательно. DLL можно подключить статически и используемые функции будут в импорте программы.

Цитата Сообщение от The trick Посмотреть сообщение
Да тут даже список функций не нужен.
Я писал о PB. Покажите как загрузить COM не зная интерфейса (это аналог списка функций процедурной DLL)?

Цитата Сообщение от The trick Посмотреть сообщение
Я не об этом, о DLLках.
В винде у динамических библиотек расширение DLL. В Linux расширение SO. В MacOS расширение DYLIB.
ActiveX DLL это чисто виндовый формат.
В Linux и MacOS библиотеки процедурные.
Если вы решите сделать ActiveX DLL для Linux и MacOS то придется создавать процедурную библиотеку и программно реализовывать что все связанно с ActiveX.
Загрузку такой библиотеки, также придется производить программно. WinAPI функций подобных CoCreateInstance нет.
Стоит ли это потраченных усилий? Кто захочет писать столько лишнего кода?

Поэтому я написал что не кроссплатформенно, т. к. ActiveX применяется в винде и поддерживается в основном в ЯП и майкрософта.
0
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
05.05.2018, 18:48
Цитата Сообщение от locm Посмотреть сообщение
Не обязательно. DLL можно подключить статически и используемые функции будут в импорте программы.
Ну их же все равно придется описывать. Во-вторых, без DLL приложение в этом случае вообще не запустится.

Цитата Сообщение от locm Посмотреть сообщение
Покажите как загрузить COM не зная интерфейса (это аналог списка функций процедурной DLL)?
Что? Список функций и есть интерфейс. Или что ты имеешь в виду?

Цитата Сообщение от locm Посмотреть сообщение
Я не об этом, о DLLках.
В винде у динамических библиотек расширение DLL. В Linux расширение SO. В MacOS расширение DYLIB.
ActiveX DLL это чисто виндовый формат.
В Linux и MacOS библиотеки процедурные.
Если вы решите сделать ActiveX DLL для Linux и MacOS то придется создавать процедурную библиотеку и программно реализовывать что все связанно с ActiveX.
Загрузку такой библиотеки, также придется производить программно. WinAPI функций подобных CoCreateInstance нет.
Стоит ли это потраченных усилий? Кто захочет писать столько лишнего кода?
Еще раз, в COM библиотеке что я сделал, какие функции Windows используются? Думаю это сразу даст ответ на все вопросы. Загрузку нужно будет производить по тому же принципу как и любую другую библиотеку.

Цитата Сообщение от locm Посмотреть сообщение
Поэтому я написал что не кроссплатформенно, т. к. ActiveX применяется в винде и поддерживается в основном в ЯП и майкрософта.
А в PB ключевое слово Interface для чего? Почему оно бинарно-совместимо с COM?
0
Эксперт по электронике
7176 / 3352 / 346
Регистрация: 28.10.2011
Сообщений: 13,212
Записей в блоге: 7
05.05.2018, 19:07
Цитата Сообщение от The trick Посмотреть сообщение
Список функций и есть интерфейс. Или что ты имеешь в виду?
Я написал что список фукнций процедурной DLL это аналог методов COM интерфейса. Если сравнивать процедурную и ActiveX DLL.

Цитата Сообщение от The trick Посмотреть сообщение
в COM библиотеке что я сделал, какие функции Windows используются?
Вы ее сами написали, а не компилятор сгенерировал часть кода (как в случае разработки скажем на VB6). Именно об этом я писал.
Цитата Сообщение от locm Посмотреть сообщение
Если вы решите сделать ActiveX DLL для Linux и MacOS то придется создавать процедурную библиотеку и программно реализовывать что все связанно с ActiveX.
Загрузку такой библиотеки, также придется производить программно.
Другими словами. В Linux и MacOS такой вид DLL обычно не используют и нет стандарта как в случае ActiveX в винде. Результат не стоит затраченных усилий.
0
Модератор
10067 / 3912 / 885
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
05.05.2018, 19:23
Цитата Сообщение от locm Посмотреть сообщение
Я написал что список фукнций процедурной DLL это аналог методов COM интерфейса. Если сравнивать процедурную и ActiveX DLL.
Цитата Сообщение от locm Посмотреть сообщение
Покажите как загрузить COM не зная интерфейса
Не понимаю тогда что ты имеешь в виду под "загрузить COM не зная интерфейса".

Цитата Сообщение от locm Посмотреть сообщение
Вы ее сами написали, а не компилятор сгенерировал часть кода (как в случае разработки скажем на VB6). Именно об этом я писал.
Ну а что кто-то заставляет на VB6 писать? Вон у bedvit'а она на C++ вообще написана. В VC++ вообще написал #import и все классы и интерфейсы автоматически декларируются.

Цитата Сообщение от locm Посмотреть сообщение
В Linux и MacOS такой вид DLL обычно не используют и нет стандарта как в случае ActiveX в винде. Результат не стоит затраченных усилий.
Стандарта в чем? COM объект это просто указатель на виртуальную таблицу методов. Все! Насколько мне известно в C++ (по крайней мере от MS) указатель на виртуальную таблицу функций используется в обычных C++ классах для виртуальных методов. А C++ классы тоже не используют? Расскажи в чем концептуальная разница между COM объектом и C++ объектом с виртуальными методами? Просто в COM это стандартизировано на бинарном уровне и предоставляется базовый набор для автоматического слежения за жизнью объекта и запроса нужного интерфейса. Результат стоит, т.к. мы имеем поддержку ЯП в которых работа с COM тривиальна, а в некоторых вообще невозможна работа с DLL импортом.
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
05.05.2018, 23:09  [ТС]
По моим скромным знаниям.
СОМ-интерфейс представляет собой просто указатель на указатель виртуальной таблицы (virtual table, или Vtable) C++

Добавлено через 17 минут
Используя абстрактный класс и виртуальные методы. Для С++ есть библиотеки MFC и ATL, с которыми проще писать рутинные вещи.

Добавлено через 5 минут
...такие как набор свойств и методов класса, ведь по сути каждый метод мы прописываем три раза в проекте.
Первый в интерфейсе, второй в хедере, третий в реализации (в самом .cpp)

Добавлено через 8 минут
Материалы, которые мне понравились по теме COM:
Первый источник (в конце статьи есть примеры - С++, VB)
Второй источник

Добавлено через 7 минут
В этой теме пока не настолько хорошо прокачан, как The trick, что есть мотивация для меня, но катастрофически не хватает времени, что есть, в каком-то роде, демативация.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2018, 23:09

Как подключить .dll библиотеку?
Есть готовый код на С++ /*---------------------------------------------------------------------------- * * демонстрация ElByECC.DLL ...

Не могу подключить dll библиотеку
Вообщем есть библиотека Visa32.dll и я не могу ее подключить. Так же есть два заголовочных файла - Visa.h и visatype.h. В про файле...

Как подключить библиотеку 7z.dll?
Как подключить библиотеку 7z.dll. Я скачал архив с сурсами, откопал 7z.dll пытаюьс добавить в проект ошибка "Не удалось добавить сылка...

Как подключить библиотеку i7000.dll?
у меня есть библиотека i7000.dll библиотека необходимая для работы с com портами все остальное работает нормально а эта работает только с 3...

Как подключить библиотеку shell32.dll ?
Решил воспользоваться примером открытия файла с помощью необходимого приложения. В примере используется API, команда. Я сделал всё как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
167
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru