альтернативные имена DLL в #import ?

 

буквально только-что столкнулся.

Разные дистрибьютеры могут давать (а как правило и дают) одним и тем-же библиотекам разные имена DLL.

Как-нибудь можно указать в #import что если somename.dll отсутсвует,  то брать othername.dll ??

и заодно уж, тоже про #import - может ли советник/индикатор узнать заранее, до вызова функций, что DLL не подгрузилась и принять собственные меры?
(например отключить часть функционала или использовать альтернативы)

 
#import: Порядок поиска файла, указанного после ключевого слова #import
Если разница только в имени файла, то ищите какой найдется.
#import "somename.dll"
#import "othername.dll"
/********/
#import
 
Maxim Kuznetsov:

давайте конкретный пример.

 
TheXpert:

давайте конкретный пример.

п.п. номер 1, с поиском альтернативных имён DLL вроде как подсказали, но ещё не проверял. В документации вроде как прямо не сказано - просто процитирован стандартный поиск DLL в виндовс по путям и реестру. Проверю - напишу результат.

в опциональный пункт 2, например: нужно по события отправить почту. Подручными средствами через DLL это можно c multipart со скриншотами и в красивом виде, а если DLL запрещены (это отслеживаемо) или нужная DLL не линкуется никак (а вот это уже не отследить), то отправить почту стандартным образом - просто текст.

в принципе ничего фантастичного в пожелании нет - это типичная ситуация.

PS/ по п1. например - при установке Tcl его DLL может иметь разные имена, в зависимости от дистрибьютера (вы можете даже сами собрать и стать дистрибьютером). Хотя это одно и то-же,с теми-же исходниками и лицензиями дозволяется. Более-менее устоявшиеся tcl86.dll tcl64.dll, но сборщики добавляют 't' и даже видел 's' и '86_64'..
 
Maxim Kuznetsov:

если хотите динамический импорт - можно вынести функционал в индикатор и вызывать его через iCustom.

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

 
Maxim Kuznetsov:

п.п. номер 1, с поиском альтернативных имён DLL вроде как подсказали, но ещё не проверял.

где? ошибка в любом импорте автоматом выгружает код.

 
TheXpert:

где? ошибка в любом импорте автоматом выгружает код.

насколько помню в MT4 если функций DLL не вызывать то ничего и не происходит.

настолько свежая проблема с именованием чужих DLL что для меня это новая-новость

 
Ну и как вариант. Символьные ссылки вроде не отменяли. Делайте ее и переименовывайте как душе угодно. Главное чтоб на машине была нужная DLLка.
 
Konstantin Nikitin:
Ну и как вариант. Символьные ссылки вроде не отменяли. Делайте ее и переименовывайте как душе угодно. Главное чтоб на машине была нужная DLLка.

в инструкцию пользователям поставил - скопируйте DLL поставщика в то имя которое ожидаю..

не особо как комильфо, но как временное решение вполне :-)

 
Maxim Kuznetsov:

в инструкцию пользователям поставил - скопируйте DLL поставщика в то имя которое ожидаю..

не особо как комильфо, но как временное решение вполне :-)

Можно даже не копировать, а создать символьную ссылку (ярлык) на оригинал в нужное место. То-же вполне себе рабочий вариант.

 
Konstantin Nikitin:

Можно даже не копировать, а создать символьную ссылку (ярлык) на оригинал в нужное место. То-же вполне себе рабочий вариант.

рассказать пользователю как создать символьную ссылку, да ещё и что это такое..проще застрелиться :-)

Причина обращения: