Хакер писал(а):Обычный импорт: Отложенный импорт:
Денис писал(а):Если программа не найдет библиотеку с функцией, то программа не запустится совсем.
arthur2 писал(а):А ошибку отлавливать не пробовал?
Хакер писал(а):Обычный импорт: нужная функция объявляется в TLB, TLB подключается к проекту
BV писал(а):Я уже говорил это Артуру, повторю и тебе: а с каких пор TLB и IDL стали частью VB?
arthur2 писал(а):При обычном импорте через тлб - да, не запустится, при Declare - ошибка ловится без каких-либо ухищрений. Даже можно поискать ненайденную библиотеку.
Денис писал(а):Код в студию!
Денис писал(а):Код в студию!
Денис писал(а):Но даже если и можно отловить ошибку, все равно обработка ошибки будет при запуске приложения?
arthur2 писал(а):При обработке ошибки нужно сменить текущую директорию и снова вызвать функцию - если библа будет там, то функция сработает.
в которой допустимы относительные путиДенис писал(а):после ключевого слова Lib требуется обязательно указать строку-константу
arthur2 писал(а):в которой допустимы относительные путиДенис писал(а):после ключевого слова Lib требуется обязательно указать строку-константу
То есть, вообще где попало? что-то не очень представляю себе такую организацию плагинов. Плагины должны лежать в одной папке. Или - в разных подпапках одной папки.Денис писал(а):лежащие возможно по разным путям.
arthur2 писал(а):То есть, вообще где попало?
Declare Sub mfunc Lib "Plugins\lib1.dll" ()
Денис писал(а):К сожалению, ни программистам, ни их программам, юзеры ничего не должны.
arthur2 писал(а):Плагины должны лежать в одной папке.
arthur2 писал(а):не вижу принципиальной разницы.
Денис писал(а):Если в ней все плагины свалены в одну кучу, то доступ (при раннем связывании) мы получим примерно так:
- Код: Выделить всё
Declare Sub mfunc Lib "Plugins\lib1.dll" ()
Но если плагины организованы в подпапки, каждый со своим описанием, вспомогательными папками итд. То тогда как?
Declare Sub mfunc Lib "Plugins\plug1\lib1.dll" ()
Артур писал(а):не вижу принципиальной разницы.
Артур писал(а):И кстати по-моему (поправьте, если это не так), после первого вызова функции искать библу больше уже не нужно.
Если моё предположение не верно - то да, вижу разницу. Но если верно - не вижу смысла выкладывать очевидный код.Денис писал(а):Код давай. Я не верю.
arthur2 писал(а):программа должна перенести их в специально для плагинов предназначенную папочку. Или - ещё правильнее - инсталлятор.
arthur2 писал(а):И кстати по-моему (поправьте, если это не так), после первого вызова функции искать библу больше уже не нужно.
arthur2 писал(а):Если моё предположение не верно - то да, вижу разницу. Но если верно - не вижу смысла выкладывать очевидный код.
Денис, с помощью Declare, пусть и не самым красивым путём, можно загрузить любую DLL, важно только придерживаться правила «каждому плагину — своё папка, каждому плагину — одинаковое имя DLL
Денис писал(а):В том то и дело, что код очевидный, и показывает невозможность организовать плагины ранним связыванием без перекомпиляции. Поэтому я предположил, что ты знаешь некий другой вариант кода.
arthur2 писал(а):Не, ну при чем здесь перекомпиляция? Под очевидным кодом я имел ввиду код смены текущей директории.
Денис писал(а):Но как это проверить, если под рукой нет бейсика (у меня).
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 48