Ошибка выполнения exe, скомпилированного из скрипта, использующего более одной библиотеки
Опишите ошибку Из скрипта, в начале которого строки #Использовать OInt #Использовать InternetMail сделан exe. При выполнении возникает ошибка на строку Профиль = Новый ИнтернетПочтовыйПрофиль; что неправильный объект, типа того. Если поменять подключение библиотек местами: #Использовать InternetMail #Использовать OInt то exe ругается уже на OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDПользователя, Тема + Символы.ПС + Текст); Без создания exe, когда просто запуск скрипта как параметр osript.exe, ошибок нет. Делаю вывод что при создании exe подключается только первая указанная в скрипте библиотека, а дальнейшие инструкции #Использовать игнорируются. Считаю что это существенная ошибка!
Воспроизведение ошибки Все изложено в описании ошибки.
Ожидаемое поведение Экзешник из скрипта должен работать точно так же, как сам скрипт.
Окружение
- ОС: Windows 11
- Версия: крайний oscript на данный момент, v1.9.3
Дополнительная информация Мой первый багрепорт, звиняйте что не так.
Это точно не так, поскольку в exe упакован менеджер ovm и в нем намного больше одной библиотеки. Ваш случай надо разбирать более детально. Есть ли в библиотеках компоненты dll?
Добрый день. Спасибо что разбираетесь, буду посещать эту страницу чаще. Под компонентами dll вы имеете в виду файлы dll внутри папки библиотеки? В одной есть. Вот полный список файлов библиотек: InternetMail: c:\1C\OneScript\lib\InternetMail\opm-metadata.xml c:\1C\OneScript\lib\InternetMail\package-loader.os c:\1C\OneScript\lib\InternetMail\README.md c:\1C\OneScript\lib\InternetMail\bin\BouncyCastle.Crypto.dll c:\1C\OneScript\lib\InternetMail\bin\MailComponent.dll c:\1C\OneScript\lib\InternetMail\bin\MailComponent.xml c:\1C\OneScript\lib\InternetMail\bin\MailKit.dll c:\1C\OneScript\lib\InternetMail\bin\MailKit.xml c:\1C\OneScript\lib\InternetMail\bin\MimeKit.dll c:\1C\OneScript\lib\InternetMail\bin\MimeKit.xml c:\1C\OneScript\lib\InternetMail\bin\syntaxHelp.json OInt: c:\1C\OneScript\lib\oint\lib.config c:\1C\OneScript\lib\oint\LICENSE c:\1C\OneScript\lib\oint\opm-metadata.xml c:\1C\OneScript\lib\oint\README.md c:\1C\OneScript\lib\oint\addins\OPI_Cryptography.zip c:\1C\OneScript\lib\oint\addins\OPI_FTP.zip c:\1C\OneScript\lib\oint\addins\OPI_MSSQL.zip c:\1C\OneScript\lib\oint\addins\OPI_MySQL.zip c:\1C\OneScript\lib\oint\addins\OPI_PostgreSQL.zip c:\1C\OneScript\lib\oint\addins\OPI_RCON.zip c:\1C\OneScript\lib\oint\addins\OPI_SQLite.zip c:\1C\OneScript\lib\oint\addins\OPI_TCPClient.zip c:\1C\OneScript\lib\oint\core\Modules\OPI_Airtable.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Bitrix24.os c:\1C\OneScript\lib\oint\core\Modules\OPI_CDEK.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Dropbox.os c:\1C\OneScript\lib\oint\core\Modules\OPI_FTP.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleCalendar.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleDrive.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleSheets.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleWorkspace.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GreenAPI.os c:\1C\OneScript\lib\oint\core\Modules\OPI_MSSQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_MySQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Neocities.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Notion.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Ollama.os c:\1C\OneScript\lib\oint\core\Modules\OPI_OpenAI.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Ozon.os c:\1C\OneScript\lib\oint\core\Modules\OPI_PostgreSQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_RCON.os c:\1C\OneScript\lib\oint\core\Modules\OPI_ReportPortal.os c:\1C\OneScript\lib\oint\core\Modules\OPI_S3.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Slack.os c:\1C\OneScript\lib\oint\core\Modules\OPI_SQLite.os c:\1C\OneScript\lib\oint\core\Modules\OPI_TCP.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Telegram.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Twitter.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Viber.os c:\1C\OneScript\lib\oint\core\Modules\OPI_VK.os c:\1C\OneScript\lib\oint\core\Modules\OPI_VKTeams.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexDisk.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexID.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexMarket.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexMetrika.os c:\1C\OneScript\lib\oint\tests\Modules\Coverage_ЗапускВсехТестов.os c:\1C\OneScript\lib\oint\tests\Modules\internal\OPI_Тесты.os c:\1C\OneScript\lib\oint\tests\Modules\internal\OPI_ТестыCLI.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ЗапросыHTTP.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ЗапросыSQL.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_Компоненты.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ПолучениеДанныхТестов.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ПреобразованиеТипов.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Classes\OPI_HTTPКлиент.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Modules\OPI_Инструменты.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Modules\OPI_Криптография.os
Я начинающий пользователь 1Скрипт, у меня нет других примеров, где подключается больше одной библиотеки, а то проверил бы на них.
Добавляю. Возможно, имеется в виду, что в библиотеке есть package-loader.os? В InternetMail есть такой, вот его содержание: Процедура ПриЗагрузкеБиблиотеки(Знач КаталогБиблиотеки, СтандартнаяОбработка, Отказ)
СтандартнаяОбработка = Ложь;
Отказ = Ложь;
ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогБиблиотеки, "bin", "MailComponent.dll"));
КонецПроцедуры
Есть известные проблемы с упаковкой таких dll в exe. Это, так скажем, нетипичный случай и в некоторой мере "негарантийный"... Надо копать и разбираться.
ОбъединитьПути(КаталогБиблиотеки, "bin", "MailComponent.dll")
При упаковке в exe вот этот код уже работать не будет, т.к. нет каталога bin и вообще, лоадер не запускается. Библиотека должна упаковывать такие вещи в "макеты". Ну короче, все не так просто с dll и упаковка в exe таких приложений нетривиальная.
Спасибо за разъяснения, буду искать обходные пути.
InternetMail вроде библиотека от @dmpas?