Использование D2XX FTDI с C

Я пытаюсь использовать ftd2xx.lib с компилятором lcc-win32, но компоновщик не работает. Я использовал CDM v2.12.14, но предыдущий драйвер FTDI выдает те же ошибки. Я пытался скомпилировать на Windows XP и Windows7; те же результаты.

Если я свяжу статическую библиотеку, я получу такие ошибки:

File ftd2xx.lib contains unknown section .text$mn.
.text section assumed
File ftd2xx.lib contains unknown section .data$r.
.data section assumed
.data$r: undefined reference to '??_7type_info@@6B@'
.text$mn: undefined reference to '__imp__SetupDiGetClassDevsA@16'
.text$mn: undefined reference to '__imp__SetupDiEnumDeviceInterfaces@20'

Если я свяжу динамический файл ftd2xx.lib (с файлом ftd2xx.dll, помещенным в тот же каталог.exe-файла), я получу следующее:

Error e:\c\ftdi_cnt\main.c 11 undefined reference to __imp__FT_Open

(Обратите внимание, что main.c, используемый для этого теста, содержит только один вызов FT_Open()).

Кто-нибудь смог запустить ftd2xx.lib с помощью компилятора lcc-win32 или в настоящее время использует lcc-win32 и может сделать быстрый тест? Вот последний драйвер FTDI. Спасибо.

1 ответ

Наконец-то это работает! Вот что я сделал:

1) Ян предложил мне использовать "Utils -> Import Foreign Library"; на самом деле это то же самое, что запуск из командной строки:

pedump /EXP ftd2xx.lib >ftd2xx.exp
buildlib ftd2xx.exp ftd2xxy.lib

Я уже пробовал это, используя для ftd2xx.lib динамический.lib, но безуспешно.

2) Я снова запустил pedump, на этот раз используя static.lib, и получил предупреждение о неизвестном имени dll, поэтому я отредактировал первую строку ftd2xx.exp, добавив это имя (ftd2xx.dll).

3) Я определил FTD2XX_STATIC перед тем, как включить ftd2xx.h

4) Я связал новую библиотеку ftd2xxy.lib

Обратите внимание, что вы не можете использовать "Utils -> Import чужую библиотеку", потому что вам нужно изменить ftd2xx.exp перед перестройкой библиотеки.

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

Другие вопросы по тегам