c - 将 FTDI 的 D2XX 与 C 一起使用

标签 c ftdi d2xx lcc-win32

我尝试将 ftd2xx.lib 与 lcc-win32 编译器一起使用,但链接器失败。我使用了 CDM v2.12.14,但之前的 FTDI driverd 也给出了相同的错误。我尝试在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) Ian 建议我应该使用“Utils --> Importforeignlibrary”;事实上,这与从命令行运行相同:

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

我已经尝试过将动态 .lib 用于 ftd2xx.lib 但没有成功。

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

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

4)我链接了新库 ftd2xxy.lib

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

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

关于c - 将 FTDI 的 D2XX 与 C 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919382/

相关文章:

c - 结构体链表中指针的类型转换

registry - 如何检测系统中的FTDI驱动程序

java - 在 Windows 和 Android 上使用 FTD2xx 驱动程序

c - 为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?

c - strtok 不丢弃换行符

c - unix中的闹钟功能

c++ - 为什么更改 block 和网格大小会对运行时产生如此大的影响?