172 похожих чатов

Привет. Помогите найти какие-нибудь варианты решения для такой ситуации. Есть библиотека,

исполняемый файл и пользовательская библиотека.
Зависимости такие:
exe <- lib
user_lib <- lib
Пользовательская библиотека user_lib — это что-то вроде динамически подключаемого модуля при старте. При запуске exe необходимо вызвать функцию fn init(), которую пользователь напишет в своей библиотеке user_lib, и если не напишет — выдать ошибку.

Теоретически в lib можно засунуть какой-нибудь трейт, если нужно.

Какие варианты решения могут быть для такой хитровывернутой фигни?

13 ответов

3 просмотра

буквально сделать extern C и динамически линковать в exe не вариант:?

Αλεχ Zhukovsky
буквально сделать extern C и динамически линковать...

Динамически линковать — это вариант. Собственно, это единственный вариант, однако мне extern "C" в этой ситуации не нравится, я бы хотел что-то нативное растовое.

𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Динамически линковать — это вариант. Собственно, э...

ну у раста есть dylib но в каком оно состоянии я хз. с extern C точно проблем не будет.

Αλεχ Zhukovsky
ну у раста есть dylib но в каком оно состоянии я х...

А ведь в каком-нибудь сишарпе эта проблема решается простой аннотацией, эхх.

𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Динамически линковать — это вариант. Собственно, э...

Если хочется динамической загрузки, то обязательно нужно выставлять из библиотеки C ABI.

red75prime
Если хочется динамической загрузки, то обязательно...

Меня Гольдштейн тоже подталкивает к этому решению. В принципе оно нормальное, мне просто не хотелось спускаться на этот уровень. Но видимо придётся.

𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Меня Гольдштейн тоже подталкивает к этому решению....

так для пользователей можно сделать штуку типа #[tokio::main], пусть генерирует extern "C" и прочие кишки

𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Меня Гольдштейн тоже подталкивает к этому решению....

По другому никак. Без чего-то вроде strong-named assembly и криптографической верификации программа не может быть уверена, что загружает библиотеку скомпилированную растом, а значит и гарантий safety никаких не может быть. Ну и ABI у раста нестабильный.

Αλεχ Zhukovsky
ну у раста есть dylib но в каком оно состоянии я х...

Оно без гарантий того что будет работать в другую фазу луны

𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
А ведь в каком-нибудь сишарпе эта проблема решаетс...

в сишарпе каждая либа в себе мегатонну метаданных и аннотаций тащит

Похожие вопросы

Обсуждают сегодня

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@NikaBelurgHR Бот? Ассемблер?
КТ315
11
юзеры Jetpack Compose тут?
Qtless Qtless
7
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Карта сайта