Перейти к содержанию
    

Как программа пользователя может найти в системе драйвер FTD2XX?

Здравствуйте все!

Подскажите, пожалуйста, как программа пользователя может найти в системе драйвер FTD2XX? Я его установил из дистрибутива в файле FTDI. Файл ftd2xx.dll лежит в каталоге с длинным именем, которое явно уникально для моего компьютера. А дальше что делать? Сейчас у меня при обращении к этой dll из моей программы возникает сообщение о том, что dll не найдена. Windows 10 64x.

Про способ "положить эту dll рядом с исполняемым файлом" я знаю. Многие так делают. А как правильно?

Заранее признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 минут назад, DSIoffe сказал:

Подскажите, пожалуйста, как программа пользователя может найти в системе драйвер FTD2XX?

Прописать в PATH?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может попробовать LoadLibraryExA() с установленным флажком LOAD_LIBRARY_SEARCH_DEFAULT_DIRS?

Или другие флажки попробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо.

16 часов назад, HardEgor сказал:

Прописать в PATH?

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

15 часов назад, jcxz сказал:

Может попробовать LoadLibraryExA()

Эта функция, опять-таки, хочет знать путь к dll.

Проблема, похоже, не совсем простая. Производители ПЛИС Lattice и Gowin для работы со своими программаторами просто кладут эту dll в каталоги своих САПР.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, DSIoffe сказал:

Эта функция, опять-таки, хочет знать путь к dll.

Её же вроде можно без пути вызывать. И тогда она ищет в списке указанных директорий. Разве нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не нужно напрямую работать с DLL FTD2xx, для этого в комплекте с DLL идут библиотеки "обёртки" под 32 и 64-бит ftd2xx.lib для сборки в Visual Studio. И заголовочный файл ftd2xx.h.

Линкуете библиотеки себе в проект приложения и работаете с подключенными устройствами FTDI через функции FT_..., у FTDI есть подробный Programming Manual на этот счёт.

Можно, кстати, работать вообще без DLL, статически слинковав библиотеку себе в проект (за счёт увеличения размера исполняемого файла, естественно). При этом на работу приложения не будут влиять последующие обновления FTD2xx.dll. Хорошо это или плохо - решать вам. В комплекте драйвера есть 2 вида библиотек: "большая" и "маленькая". "Большая" вмещает в себя весь функционал DLL, а "маленькая" является всего лишь интерфейсом к DLL.

Изменено пользователем gerber

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, jcxz сказал:

Её же вроде можно без пути вызывать. И тогда она ищет в списке указанных директорий. Разве нет?

Да. Но другие драйверы не надо прописывать в path, они каким-то другим способом сообщают системе о себе. Значит, и этот должен был сообщить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, DSIoffe сказал:

Да. Но другие драйверы не надо прописывать в path, они каким-то другим способом сообщают системе о себе.

А вы прочитали описание функции, о которой я писал? Там вовсе не о "прописывании в path" речь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 minutes ago, DSIoffe said:

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

у меня родной драйвер от фтди при установке просто скопировал ftd2xx.dll в windows\system32 соответственно ничего искать не надо.

причем возможно vcp драйвера и так в винде есть поэтому любой usb->serial шнурок и так работать будет, а вот d2xx возможно нету, и его надо бы ручками установить.

в картинках: https://ftdichip.com/wp-content/uploads/2022/05/AN_396-FTDI-Drivers-Installation-Guide-for-Windows-10_11.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, _pv сказал:

в картинках:

Спасибо! С Вашей подачи пошло 🙂 Я прочитал этот текст и сделал две вещи:

1) Запустил инсталлятор драйверов от FTDI с правами администратора.
2) Включил в Диспетчере устройств отображение скрытых устройств и удалил всё от FTDI вместе с файлами драйверов.
После этого нашёл ftd2xx.dll в папках C:\Windows\System32\ и C:\Windows\SysWOW64\. И ещё что-то, начинающееся на ft. И моя программа нашла dll. А в Диспетчере устройств, наконец, при подключении платки с FT2232H стали появляться два COM порта вместо одного.

4 часа назад, jcxz сказал:

А вы прочитали описание функции, о которой я писал? Там вовсе не о "прописывании в path" речь.

Сначала мне попалось описание на каком-то левом ресурсе, и там было про path. Потом посмотрел у MS, там не было. Но я всё равно не понял, что делает эта функция и зачем она мне 😞 Не программист я 😞

4 часа назад, gerber сказал:

Не нужно напрямую работать с DLL FTD2xx, для этого в комплекте с DLL идут библиотеки "обёртки" под 32 и 64-бит ftd2xx.lib для сборки в Visual Studio. И заголовочный файл ftd2xx.h.

Почему не надо напрямую?

Я работаю из Delphi. Заголовочный файл .pas вместо .h у меня есть. Всё хорошо работает. А подключить те lib я вряд ли смогу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...