【问题标题】:Using D2XX of FTDI with C将 FTDI 的 D2XX 与 C 一起使用
【发布时间】:2016-03-10 14:35:13
【问题描述】:

我正在尝试将 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。谢谢。

【问题讨论】:

  • 我不知道 Lcc-win32。我在 Visual Studio 中多次使用该库,没有问题。
  • 我开始认为 D2XX 需要一个 C++ 编译器。有人尝试过只使用 C 编译器吗?
  • 您是在尝试链接原始 .lib 文件(可能用于 MSVC),还是将它们转换为 lcc-win32 库格式?
  • ftd2xx.h 头文件要求在 Windows 上编译时预定义 _WIN32 宏。 Lcc-Win32 编译器会这样做吗?如果没有,您必须安排在包含标题之前对其进行定义。

标签: c ftdi d2xx lcc-win32


【解决方案1】:

终于成功了! 这是我所做的:

1) Ian 建议我应该使用“Utils --> Import foreign library”;事实上,这和从命令行运行是一样的:

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 --> Import foreign library”,因为需要在重新构建库之前修改ftd2xx.exp。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多