|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 12
|
||||||||||||||||
VB - Excel. Работа с классом в DLL20.02.2019, 21:13. Показов 672. Ответов 7
Доброго дня, гуру форума.
Есть два вопроса, которые не могу решить. Очень надеюсь на вашу помощь: Excel 2007. 1. При открытии книги обращаюсь к dll (написана на VB6). Dll отрабатывает верно, но спустя несколько минут Excel виснет. Если не объявляю и не обращаюсь к классу внутри Dll, то всё работает без зависаний. Пробовал комментировать все действия в классе, оставляя только его объявление. Итог один - отрабатывает и, спустя некоторое время, виснет. Проблема точно с классом, с его объявлением. У меня идеи уже закончились. Код ниже. 2. Как можно в Excel вернуть значение переменной, которая формируется внутри класса dll? В моём примере это, скажем, MACs.Status_MAC. Прошу Вашей помощи. Код в Excel
0
|
||||||||||||||||
| 20.02.2019, 21:13 | |
|
Ответы с готовыми решениями:
7
Разработка приложения: работа с классом из DLL Некорректная работа с Microsoft.office.interop.excel.dll на других ПК
|
|
Модератор
|
||
| 20.02.2019, 21:27 | ||
|
Как написана DLL? Просто так нельзя экспортировать функции, нужно инициализировать рантайм.
0
|
||
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 12
|
|
| 20.02.2019, 21:46 [ТС] | |
|
0
|
|
|
Модератор
|
||
| 20.02.2019, 21:51 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 12
|
||||
| 20.02.2019, 22:25 [ТС] | ||||
|
0
|
||||
|
Модератор
|
|
| 20.02.2019, 22:31 | |
|
Также я вижу глобальную переменную objExcel. Есть уверенность что библиотека выгружается когда переменная содержит ссылку на объект.
При создании Native Dll на VB есть очень много неочевидных моментов. Проще просто играть по правилам COM и создавать объект стандартными средствами. В общем нужно обеспечить инициализацию рантайма при работе с DLL и деинициализацию при выходе. Этим занимается стандартный механизм VB, он при создании объекта инициализирует рантайм, а при уничтожении всех созданных объектов деинициализирует его. Если нужно обеспечить работу экспортируемых функций то необходимо создать такой публичный объект и дальше просто работать с экспортом. При уничтожении объекта либа деинициализируется сама. В противном случае мы не знаем когда деинициализировать рантайм. Делать это в DllMain не совсем корректно, т.к. на каждый "чих" мы инициализируем рантайм, а вот деинициализация может не пройти т.к. для деинициализации необходимо выполнить ряд мер в контексте потока в котором рантайм инициализирован, что не всегда возможно. К примеру мы можем инициализировать 5 контекстов при получении 5 DLL_THREAD_ATTACH, а вот как их деинициализировать если мы получаем DLL_PROCESS_DETACH? Ответ - никак. Поэтому нужно либо учитывать этот факт и производить инициализацию при необходимости, т.е. либо вызывать перед началом работы какую-либо специальную функцию для инициализации и в конце функцию деинициализации. Но вопрос, чем стандартные функции DllGetClassObject / DllCanUnloadNow не подходят? Я как-то начинал делать специальный модуль чтобы делать DLL из EXE, но столкнувшись с этими ограничениями - забросил. Видимо и Хакер поэтому забросил fndll. Просто в этом смысла нет. Кто знает об этих ограничениях - напишет Dll как нужно.
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 12
|
|
| 20.02.2019, 22:41 [ТС] | |
|
Вектор размышлений понятен. Буду пробовать копать дальше. Спасибо.
0
|
|
|
Модератор
|
||
| 20.02.2019, 22:41 | ||
|
0
|
||
| 20.02.2019, 22:41 | |
|
Помогаю со студенческими работами здесь
8
Ошибка в dll с классом AnsiString .EXE и .DLL (ошибка LNK2019 с шаблонным классом) Создать DLL с сервисным классом ServiceSort<T> с методами SortMax и SortMin Где взять dll с классом (для дальнейшей регистрации этого класса)? Разработать и реализовать DLL-модуль с классом, позволяющим запускать внешнюю программу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|