DLL без драйвера
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
DLL без драйвера
Добрый вечер. Вопросик: есть устройство с драйвером, к которому идет dll через которую происходит управление.
Если например драйвер не установлен, то программа не запускается (перечеркнутая стрелка - ошибка dll естественно).
Нельзя ли сделать так, чтобы остальная часть программы при этом работала?
Если например драйвер не установлен, то программа не запускается (перечеркнутая стрелка - ошибка dll естественно).
Нельзя ли сделать так, чтобы остальная часть программы при этом работала?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: DLL без драйвера
Выпилить или задизэйблить все Call Library Function Nodes, например. А если хочется программно, то надо грузить библиотеку динамически и смотреть, грузится она или нет. Для этого надо использовать LoadLibrary из WinAPI и анализировать результат.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: DLL без драйвера
задизэйблить все - именно так и делал раньше, но хочется сделать как правильно. Гуглил загрузку библиотеки динамически, но примеров вообще нет, может есть пример какой-то?
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: DLL без драйвера
Можно в свойствах CLF указать, что путь будет задан...
А перед запуском функции из DLL, проверить путь и если файл DLL отсутствует, то пропускать. Если файл на месте, то запускать CLF.
Но так нужно каждый вызов CLF обернуть..
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: DLL без драйвера
Да, способ IvanLis самый простой, но в любом случае потребуется сделать своего рода рефакторинг по вызову библиотек по всей программе. При инициализации программы либо проверяете путь к драйверу, либо пробуете грузить DLL с помощью LoadLibrary: https://docs.microsoft.com/en-us/window ... adlibrarya (просто вызовите эту функцию через CLF Node), если вернёт 0, значит загрузка неудачна. Можно даже не вызывать GetLastError далее, а сразу прописать ошибку в кластер error. Ну, и естественно, во всех CLFN надо установить опцию "Specify path on diagram", как на скрине выше показано.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: DLL без драйвера
Допустим не на месте, как тогда запускать CLF, он в программе в любом случае присутствует - соответственно не даст программе запуститься?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: DLL без драйвера
rushonda, если драйвер отсутствует, возникнет ошибка на проводе error, выходящем из File/Directory Info Function, и программа не зайдёт в зелёный кейс с CLFN, а зайдёт в красный, где его нет. Сама DLL'ка будет грузиться в память только при вызове CLFN, т.к. указано брать путь с диаграммы.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: DLL без драйвера
Так Вам необходимо функцию указать и сконфигурировать ее.
Проще переделать из того, что уже сделано.
Я же не зря написал:
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: DLL без драйвера
Если у вас провод error проходит или будет проходить через каждый CLFN, то можно красно-зелёную Case-структуру вообще не городить. Если в проводе будет ошибка, то CLFN не выполнится, а ошибка передастся на дальнейшие инструменты. Так работает, этим вполне можно пользоваться.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: DLL без драйвера
Случай касается например, когда программу на другую машину переносишь, а dll например (ну предположим) нет, тогда программа не запустится (разорванная стрелка), а хотелось бы пока без dll поработать например. Ну или например переносишь проект на машину другой битности, соответственно dll тоже будет ругаться.dadreamer писал(а): ↑25 май 2020, 08:19 Если у вас провод error проходит или будет проходить через каждый CLFN, то можно красно-зелёную Case-структуру вообще не городить. Если в проводе будет ошибка, то CLFN не выполнится, а ошибка передастся на дальнейшие инструменты. Так работает, этим вполне можно пользоваться.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: DLL без драйвера
rushonda писал(а): ↑29 май 2020, 17:14Случай касается например, когда программу на другую машину переносишь, а dll например (ну предположим) нет, тогда программа не запустится (разорванная стрелка), а хотелось бы пока без dll поработать например. Ну или например переносишь проект на машину другой битности, соответственно dll тоже будет ругаться.
- Вложения
-
- Untitled 1.vi
- lv2011
- (5.86 КБ) 84 скачивания
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: DLL без драйвера
А, ясно, нужно просто прописать Function name. Если просто из палитры вставить CLFN, то ошибку выдает. Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение