使用FTDI的D2XX和C

时间:2016-03-10 14:35:14

标签: c ftdi d2xx lcc-win32

我尝试将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()调用。)

是否有人能够使用lcc-win32编译器运行ftd2xx.lib或者当前正在使用lcc-win32并且可以进行快速测试?这是最新的FTDI driver。谢谢。

1 个答案:

答案 0 :(得分:0)

最后它有效! 这是我做的:

1)伊恩建议我应该使用“Utils - > Import foreign library”;事实上,这与从命令行运行相同:

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

我已经尝试过为ftd2xx.lib使用动态.lib,但没有成功。

2)我再次运行了一次,这次使用静态.lib,我收到一条关于未知dll名称的警告消息,所以我编辑了添加该名称的ftd2xx.exp的第一行(ftd2xx.dll)。

3)我在包括ftd2xx.h之前定义了FTD2XX_STATIC

4)我链接了新库ftd2xxy.lib

请注意,您不能使用“Utils - > Import foreign library”,因为您需要在重新构建库之前修改ftd2xx.exp。

我希望这对其他人有帮助。