LINUX.ORG.RU

Смена библиотеки в горячую

 , ,


0

4

Имеются начальные знания шарпа, хочу пересесть на новый, модный, молодежный rust. Хочу поинтересоваться, а можно ли в горячую менять используемые библиотеки? Сказано криво, сейчас объясню. Есть несколько реализаций метода «сделатьзбс», если я раскидаю его в две разные библиотеки и назову метод одинаково, смогу ли я менять эти библиотеки как перчатки в зависимости от значения в файле (напр. хранить в нем имя библиотеки)? Нужно исходить из того, что название метода в каждой новой библиотеке неизвестно, поэтому решил назвать метод одинаково.

По идее, сможешь. Правда есть нюансы: std::dynamic_lib - не стабильный модуль, а значит им особо не занимались, учитывая то, что сейчас стараются всё «важное» стабилизировать. Плюс это всё unsafe и придётся свои обёртки писать, хотя могли бы быть готовые.

Я такого делать не пробовал, но склепать прототип - дело получаса. Попробуй и посмотри понравится ли тебе результат.

DarkEld3r ★★★★★
()
Ответ на: капитан от nagibator

при линковке указываешь нужную библиотеку и все

Я так понял, что он в рантайме менять хочет.

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Указываем в файле список библиотек и во время запуска линкуемся с ними. По-моему, нельзя строковое значение (имя метода) использовать как обращение к нужному методу (или можно?). А значит все эти библиотеки запускаются и с каждой из них одновременно можем работать, т.е.вызывать по одинаковому названию метода.

vetegac
() автор топика
Ответ на: комментарий от vetegac

Указываем в файле список библиотек и во время запуска линкуемся с ними.

Покажи как ты делаешь это на шарпе.

По-моему, нельзя строковое значение (имя метода) использовать как обращение к нужному методу (или можно?).

Можно. Естественно, такого имени в библиотеке может не оказаться.

А значит все эти библиотеки запускаются и с каждой из них одновременно можем работать, т.е.вызывать по одинаковому названию метода.

Что значит «одновременно запускаются»? Ну да, можно загрузить сколько угодно. Да, в них может быть функция с одинаковым именем. И тогда её можно вызвать.

Если будет не лень, то даже вечером поэкспериментирую.

DarkEld3r ★★★★★
()
Последнее исправление: DarkEld3r (всего исправлений: 1)
Ответ на: комментарий от vetegac

Тебе перед запуском выбирать или во время выполнения программы? Если перед запуском — смотри в сторону LD_LIBRARY_PATH, если в рантайме — используй приведенный в треде выше модуль.

buddhist ★★★★★
()
Ответ на: капитан от nagibator

«На горячую» - значит во время работы программы. «При линковке» тут не подходит.

Aswed ★★★★★
()
20 января 2016 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.