Anonymous
картину
Aydar
но это не меняет
Я правильно понял что ты при именно при загрузке дллки хочешь создать луастейт и запустить скрипт? Или стейт у тебя уже создан в другом месте и ты в dllmain хочешь что-то другое сделать?
Anonymous
Anonymous
у меня длл мейн вообще не инициализируется
Anonymous
но компилятор его оставил
Anonymous
Anonymous
он когда просто загружается, сразу выгружается
Aydar
Anonymous
в каком смысле?
Anonymous
Aydar
опять же не понял
Попробуй убрать вот этот свой сол стейт и загрузку своего скрипта и тупо внутри dllmain пропиши
sol::state lua;
lua.script("print('Hello')");
Сработает?
Anonymous
Нет, не сработало.
Anonymous
я зафризил
Anonymous
основное приложение, подключился деббагером, подключил библиотеку, поставил бряк на длл маин
Anonymous
он даже не сработал
Anonymous
в общем, и интерфейс от длл не появился
Anonymous
Мне, кажется либо clang всё ломает, либо сол.
Anonymous
зафризил на время чтобы бряк поставить
Anonymous
потом разфризил
Anonymous
Ну у меня вообще энтри поинт не происходит
Anonymous
у меня будто длл ломается
Anonymous
при использовании сол
Anonymous
использую LuaJIT в связке с sol
Anonymous
Смотри, я зафризил программу заинжектил длл, включил в настройках деббагера прерываться на выгрузке/загрузке длл
Anonymous
после чего зашел в отладочные символы
Anonymous
нашел мою длл
Anonymous
открыл DllEntryPoint
Anonymous
и поставил бряк на самую первую строку
Anonymous
После чего расфризил
Anonymous
у меня длл загрузилась
Anonymous
а потом сразу же выгрузилась
Anonymous
если у меня нету строки soll:state
Anonymous
то у меня ui интерфейс и всё остальное прекрасно работает
Timur
c DllMain всё сложно и очень хрупко https://devblogs.microsoft.com/oldnewthing/20040128-00/?p=40853
Aydar
то у меня ui интерфейс и всё остальное прекрасно работает
В DllMain грубо говоря можно вызывать ограниченный сабсет функций (судя по https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-best-practices) чтобы понять как сделать правильно надо читать конкретно про injecting/hooking
mva
https://github.com/po5/mpv_sponsorblock
mva
автор - извращенец проклятый
mva
половину плагина написал на lua, вторую на питоне и из lua (через апи плеера) вызывает питоноинтерпретатор скармливая ему скрипт
mva
🤦♂️🤦♂️🤦♂️
mva
надо будет найти время и переписать
mva
это не "нужно вот прямо сейчас"
mva
это итак переписываслось с жаваскрипта (оригинал - браузерный плагин)
mva
и быо это два года назад (11.11.09)
Aydar
это не "нужно вот прямо сейчас"
Ладно автор видимо действительно извращенец, но судя по количеству звёзд скрипт популярный значит всем пофиг как оно написано.
Leon174
Luarocks штука веселая, да.
Aydar
mva
мда
mva
решил посмотреть другой плагин, минималистичный, без плюшек и наворотов, кторый использует csv скачанный с сайта проекта, без всяких sqlite hastlib и прочего
mva
и вот: https://github.com/asakura42/sponsorblock-mpv-local/blob/main/main.lua#L10
mva
они там все поехавшие чтоли?
mva
вызывать лишний процесс шелла дл интерпретации скрипта в котором cat | sed | tr | sed?
mva
ну уж это-то на lua можно сделать и без внешних либ
mva
Aydar
Александр
Ну вот например https://github.com/jaseg/python-mpv существует давно из зависимостей там только сам питон модуль, остальное все от mpv
Так что в этом хорошего ?) Т.е. вместо того, чтобы скачать два несчастных файлика нужно целое расширение-расширений устанавливать ?) Я сомневаюсь в практичности такого решения - да вызов питона из луа может и не камильфо, но а) автору не нужно было приспосабливаться под чужой интерфейс расширений б) Пользователю не нужно читать как настроить мпв под работу с расширением-расширений и не нужно pip install python-mpv, т.е. автор сделал минималистичное по своей сути решение - питон из коробки, луа из коробки, только закинь два файла куда нужно и всё.
mva
mva
набирается стопка вот таких костылей-прослоек, всё друг друга неоптимально дёргает и получается как получается
Александр
вот как-то так весь энтерпрайз и работает
Ну что поделаешь - хочется и результат получить и не сидеть сутками за написанием расширения, но повторюсь - никто не запрещает lua/sh версию переписать - сделайте, если есть желание и время.
mva
желание есть, времени нет :(
mva
но я отложил в планы таки переписать :)
Александр
набирается стопка вот таких костылей-прослоек, всё друг друга неоптимально дёргает и получается как получается
Давайте честно, луа - язык расширений, но он был бы на этом поприще хорош только если либо разрабы, что встраивают - дописывали бы нужные библиотеки, что для луа были бы доступны из коробки, либо если бы авторы языка пошли по пути питона и тянули с луа продвинутую библиотеку полезностей, но первое время и поддержка, второе насколько знаю противоречит философии разрабов языка, поэтому тут такие костыли практически вынужденная мера, т.к. из коробки луа хорош только для обработки текстов, простой логики и как продвинутый язык для хранения настроек, всё остальное нужно прикручивать либо на Си, либо костылями
mva
Давайте честно, луа - язык расширений, но он был бы на этом поприще хорош только если либо разрабы, что встраивают - дописывали бы нужные библиотеки, что для луа были бы доступны из коробки, либо если бы авторы языка пошли по пути питона и тянули с луа продвинутую библиотеку полезностей, но первое время и поддержка, второе насколько знаю противоречит философии разрабов языка, поэтому тут такие костыли практически вынужденная мера, т.к. из коробки луа хорош только для обработки текстов, простой логики и как продвинутый язык для хранения настроек, всё остальное нужно прикручивать либо на Си, либо костылями
луа не язык расширений
mva
луа был придуман как язык с минимальным футпринтом, для встраивания во всё что можно
mva
в частности, изначально, в нефтяное оборудование
mva
минимальный футпринт и путь питона не совместимы
mva
Python tries to give you as MUCH as possible, while
Lua tries to give you as LESS as possible
(cc) Matthew Wild
mva
Александр
не только
Это дискуссионный вопрос, но на деле я не вижу для луа места, за рамками языка для встраивания в компилируемые языки, для поддержки расширений/динамики поведения окружения ПО на более тяжёлых языках и языка для обработки текстов, остальное хотите или нет влечёт за собой костыли будь то luarocks или пример выше(смешение языков), другими словами для всего остального луа уже не хватает.
R
Lua настолько больше, чем просто язык расширений, что даже спорить на эту тему лень.
Александр
Lua настолько больше, чем просто язык расширений, что даже спорить на эту тему лень.
Стандартная библиотека к сожалению говорит об обратном, в изоляции язык становится минималистичным не только внешне, но и по назначению, более того тот же Иерусалимски сам постоянно об этом говорит, что главное - минимализм, встраивание и переносимость. К тому же стандартная библиотека сама по себе тоже расширение окружения луа, с той лишь разницей, что очень дешёвое для поддержки и стандартное для Си89/99.
mva
прошло то время, уже начали на ржавчине писать
R
Лень спорить. Кто в 2021 считает, будто Луа масенький и немощный, тот банально не в теме.