Я пытаюсь скомпилировать пример 64-битной c-программы с использованием ftd2xx lib FTDI, используя gcc внутри cygwin без каких-либо успехов. Я всегда получаю ошибки компоновщика.Использование cygwin для компиляции приложения c с использованием ftd2xx.lib by FTDI
Мой проект содержит эти файлы:
- main.c Мой Sample Application
- ftd2xx.h заголовке библиотеки
- ftd2xx.lib Importlibrary
- ftd2xx64.dll динамическая библиотека 64 битном
- wintypes.h Упаковочный используется ftd2xx.h, чтобы включить windows.h
Это моя основная функция:
#include <stdio.h>
#include <windows.h> // for windows specific keywords in ftd2xx.h
#include "ftd2xx.h" // Header file for ftd2xx.lib
int main()
{
FT_HANDLE ft_handle; // handle to the USB ic
FT_STATUS ft_status; // for status report(error,io status etc)
ft_status = FT_Open(0,&ft_handle); //open a connection
if(ft_status == FT_OK) //error checking
{
printf("\n\n\tConnection with FT 232 successfull\n");
}
else
{
printf("\n\n\tConnection Failed !");
printf("\n\tCheck device connection");
}
FT_Close(ft_handle); //Close the connection
return 0;
}
Это мой линкер CMD
Building target: testSimple.exe
Invoking: Cygwin C Linker
gcc -L/cygdrive/e/jschubert/workspaces/testSimple/ -o "testSimple.exe" ./main.o -lftd2xx
А вот мой выход
/cygdrive/e/jschubert/workspaces/testSimple//ftd2xx.lib(FTD2XX.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_FT_Open' defined in .idata$5 section in /cygdrive/e/jschubert/workspaces/testSimple//ftd2xx.lib(FTD2XX.dll.b)
/cygdrive/e/jschubert/workspaces/testSimple//ftd2xx.lib(FTD2XX.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_FT_Close' defined in .idata$5 section in /cygdrive/e/jschubert/workspaces/testSimple//ftd2xx.lib(FTD2XX.dll.b)
После прочтения статьи How does the Import Library work? Details? и http://www.mikrocontroller.net/topic/26484 Я довольно shure, что есть проблема с сгенерированными функциями экспорта lib. Но как мне их исправить?
Посмотрите на эту ссылку: https://www.technovelty.org/c/relocation-truncated-to-fit-wtf.html – SergeyLebedev
И попробуйте ту добавить '-mmodel' ключ зажигания в' gcc' командной строки – SergeyLebedev
Спасибо за ваш ответ. Но как я могу использовать флаг -mmodel. Это не gcc -L/cygdrive/e/jschubert/workspaces/testSimple/-o "testSimple.exe" ./main.o -lftd2xx -mmodel. Я не могу много узнать об этом флаге в Интернете. –