OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Не компилируются Перечисления заданные в библиотеке DLL, которая подгружается с помощью ПодключитьВнешнююКомпоненту

Open perfolenta opened this issue 3 years ago • 3 comments

Опишите ошибку если в DLL определено перечисление, то его не возможно использовать в коде программы, т.к. на момент компиляции библиотека не загружена...

Воспроизведение ошибки

  1. Создаём DLL в которой определяем перечисление МоёПеречисление...
  2. Создаём скрипт, в котором с помощью ПодключитьВнешнююКомпоненту("ххх.dll"); загружаем библиотеку...
  3. Добавляем код использующий перечисление, например, ОК = МоёПеречисление.ОК;
  4. видим ошибку компиляции "Неизвестный символ: МоёПеречисление"

Ожидаемое поведение Должен быть способ подгрузить библиотеку DLL перед компиляцией скрипта... предлагаю модифицировать директиву #Использовать... #Использовать "ххх.dll"

Дополнительная информация модификацию надо сделать для двух режимов, для запуска скрипта и для компиляции в ЕХЕ.. я предлагаю сделать как в приложенном файле, но это только для режима запуска скрипта... как там ЕХЕ собирается я еще не разбирался... LibraryResolver.zip .

perfolenta avatar Dec 24 '21 19:12 perfolenta

Способ уже есть, видимо не работает. Если библиотека, подключаемая через Использовать содержит ВК, то она должна в модуле загрузчика library-loader.os загрузить ее методом ЗагрузитьБиблиотеку

EvilBeaver avatar Dec 24 '21 19:12 EvilBeaver

информации о том, что такое library-loader.os мне найти не удалось... возможно Вы имели ввиду package-loader.os, с ним пробовал... если установить всё как положено в папку lib, то при запуске скрипта библиотека подгружается и перечисления тоже работают... но в ЕХЕ файле уже не работает... я об этой проблеме писал тут https://github.com/EvilBeaver/OneScript/issues/1063#issuecomment-995353864 но вот заставить работать загрузку библиотеки из текущей папки скрипта мне не удалось... не всегда удобно устанавливать библиотеку в lib, особенно когда скрипт носишь с собой... может просто не знаю как... ПодключитьВнешнююКомпоненту работает, но она загружает библиотеку во время выполнения, поэтому при компиляции перечисления определенные в библиотеке не компилируются... В общем, если есть желание, то внесите предложенные мной изменения в этой ветке и в той на которую я ссылку привел... всё равно лучшего решения пока ни кто не предложил...

perfolenta avatar Dec 24 '21 20:12 perfolenta

кстати, извиняюсь, не заметил, такая проблема уже была описана здесь: https://github.com/EvilBeaver/OneScript/issues/1091

perfolenta avatar Dec 25 '21 14:12 perfolenta