|
|
|
Как написать библиотеку на С++ для программ на VB 6.019.12.2024, 18:58. Показов 5880. Ответов 58
Часто разбрасываюсь и забываю о многом. Скомпилировал две статьи из интернета и добавил кое-что своё.
Прошу исправить ошибки, если что-то неправильно описал и дополнить, если что-то упустил. Делал фактически "на скаку".
1
|
|
| 19.12.2024, 18:58 | |
|
Ответы с готовыми решениями:
58
Как написать dll библиотеку для lua? Как написать библиотеку для работы с сокетами? |
|
|
||||||
| 28.10.2025, 05:31 [ТС] | ||||||
|
У меня скомпилировалась dll на VS2010. Работает на Wun XP и Win 10, а та же программа не видит dll из-под Win 7.
В начале файла у меня написано:
0
|
||||||
| 28.10.2025, 14:54 | ||||||||
dllmain.cpp и закомментировать #include <windows.h>
Еще одно замечание по созданию библиотеки - заголовочник не обязателен, достаточно прописать все экспортируемые функции в файле .def.
0
|
||||||||
| 02.11.2025, 10:47 | ||
|
Пару слов стоит сказать про экспорт. В общем, как я выяснил
__declspec(dllexport) это стандартный спцификатор экспорта функции с C и С++, если его указывать, то функции автоматически попадают в экспорт. Однако есть отичия, если мы пишем на C, то функции с __declspec(dllexport) будут экспортироваться с причудливыми именами. На C++ - функции экспортируются с нормальными именами, но, еще в добавок, с полной сигнатурой вызова (int __stdcall CCall5(void *,void *,void *,void *,void *,void *)). Не знаю как это работает, наверное в cpp загловочники встраиваются в библиотеку, также как idl. Если на С++ добавить extern "C", то функции экспортируются причудливо, как в C. Если делать COM-библиотеку(ATL), то лучше не использовать __declspec(dllexport), а только прописывать экспорты в файле .def, поскольку добавении функций в com-экспорт (в .idl) возникает конфликт имен - нельзя экспортировать функцию с __declspec(dllexport) и в idl/tlb с одним и тем же именем, но если использовать файл def, то можно, однако добавляется дополнительное бремя заполнения файла def, наряду с бременем заполнения файла idl. Если бы это делалось автоматически, было бы конечно лучше, т.е. существовали бы какие-то спецификаторы, для экспорта функции в com. Но, кстати говоря, в VB6 насколько знаю, вообще нету встроенной возможности экспортировать функции, только классы.Добавлено через 8 минут
0
|
||
|
Модератор
|
||
| 02.11.2025, 11:44 | ||
|
0
|
||
| 02.11.2025, 13:19 | ||
|
0
|
||
| 03.11.2025, 12:59 | ||||||
|
Еще один момент, касаемо экспорта - если экспортировать с помощью declspec функцию из .c-
Еще момент, чтобы в cpp-файле увидеть функцию из с-файла нужно прописать эту функцию в заголовочнике так
0
|
||||||
|
Модератор
|
||
| 03.11.2025, 21:19 | ||
|
void в параметрах функции старый стандарт языка Си, в новых это не обязательно.
0
|
||
| 05.11.2025, 02:22 | |||||||
0
|
|||||||
| 07.12.2025, 04:02 | |
|
Я вот что заметил, хотел использовать другие библиотеки в своей библиотеки, но заметил странную особенность - если эти библиотеки недоступны, то моя библиотека перестает подключаться в VBA - LoadLibrary возвращает 0. Это конечно не лучший сценарий, но такова данность этого мира видимо.
0
|
|
| 07.12.2025, 10:46 | |
|
The trick, можно, конечно и так, библиотеки там не большие, я хотел подключал minizip, который, в свою очередь зависит от zlib, но хотелось бы все-таки иметь какое-то решение, для чисто динамического подключения. Вот сейчас думаю, можно парсить заголовочники и все функции преобразовывать в указатели + делегаты + формировать файл инициализации всех указателей
0
|
|
| 07.12.2025, 11:16 | ||
|
The trick, чтобы библиотеки не грузились, если они не нужны, ну еще может компиляция побыстрее будет без дополнительного "балласта", хотя х.з. Я вообще я, конечно, пока не доконца вдупляю, что есть заголовочники, открыл сейчас один, а там функции целиком вместе с реализацией.
Добавлено через 10 минут
0
|
||
| 07.12.2025, 12:00 | ||
|
0
|
||
|
Модератор
|
|
| 07.12.2025, 12:03 | |
|
testuser2, https://learn.microsoft.com/en... w=msvc-140
1
|
|
|
Модератор
|
|||||
| 07.12.2025, 12:35 | |||||
|
0
|
|||||
| 07.12.2025, 14:18 | |||||
;delayimp.lib, в поле "отложенно загружаемые dll пишем все dll которые нужно отложенно грузить (в моем случае zlib.dll;minizip.dll). Скомпилировал - открыл VBA, LoadLibrary возвратила указатель. При попытке вызвать dll-зависимой функции возникло необрабатываемое исключение, но это хорошо, нужно теперь в самой функции сделать проверку инициализации либ, или просто отдельную экспортируемую функцию инициализации. А уже процедура инициализации будет искать библиотеки в директории моей библиотеки и в папке вызывающего Добавлено через 23 минуты Добавлено через 21 минуту Все как-то оказалось сложнее, после манипуляций которые я описал у меня в папку проекта при сборке попадаются minizip.dll и zlib.dll. R zlib.dll зачем-то добавляется еще клон zlib1.dll, идентичный по размеру, у minizip нет такого клона. В VBA LoadLibrary грузит zlib.dll, но не грузит minizip, в общем какой-то бардак
0
|
|||||
| 08.12.2025, 17:00 | |||
0
|
|||
| 08.12.2025, 17:00 | |
|
Составить библиотеку программ для решения матричных уравнений Copy Hook. Или как написать библиотеку для перехвата копирования Как написать тест программ для след класса Как используя библиотеку fsream записать в одну строку результаты из двух программ? Ищу библиотеку для создания программ обмена между ПЛК и ПК через программатор AMSAMOTION (USB - MPI адаптер) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|