【问题标题】:FTDI Drivers and dllFTDI 驱动程序和 dll
【发布时间】:2014-10-12 23:42:15
【问题描述】:

我有一个关于包含cdm v2.10.00 whql Certified.rar的文件和文件夹类型的问题

在rar中有3个文件夹:

Static\i386, Static\amd64, i386, amd64

在一个使用 C++ 的简单项目中,我如何知道我必须从哪个文件夹获取 ftd2xx.dll? 我认为 ftd2xx.h 是一样的。 但是dll呢?在静态文件夹中只有 .lib 文件。它的 lib 文件有什么用?

【问题讨论】:

    标签: drivers ftdi


    【解决方案1】:

    如果你创建32位软件,你必须使用i386版本,如果你创建64位软件,使用amd64版本。

    静态文件夹中的.lib,是你静态链接的时候。 .dll 用于动态链接。这意味着如果您分发软件,您也必须分发 dll。静态版本将包含您创建的 .exe 中的所有内容。

    应该有一些文档对此进行解释。您可能需要#define 一些东西,具体取决于您使用的是静态版本还是动态版本。 (除非 .h 不是 100% 相同,那么您只需选择相应的 .h 文件)。

    【讨论】:

    • 我使用这个 rar 除了我的程序和驱动程序安装。 ftdichip.com/Support/Documents/AppNotes/… 见第 9 页和第 10 页。我选择了整个文件夹进行手动安装,设备工作正常!最后,我想了解此文件夹中包含的 dll 文件,以便在不使用示例的情况下从零开始制作项目
    • 如何确定我使用的是静态版本还是动态版本?
    • 关于“驱动程序手动安装”:有什么重要的我需要注意的吗?我使用的驱动程序和 dll 版本之间是否有任何关系?
    • 关于静态vs动态,你可以选择,随便选一个,后期切换方便。有关更多信息,请参见例如 Static linking vs dynamic linking。我没有看下载,但你必须验证 .h 文件是否真的相同(使用文件比较工具)。如果它们相同,则必须在某个地方解释您必须在源代码中执行哪些操作才能在静态链接或动态链接之间进行选择。我对 ftdi 驱动程序一无所知(您的问题并不是真正的 ftdi 特定的 - lib 和 dll 文件无处不在)。
    • 只有一个 .h 文件。另外我不知道如何在 dll 和 lib 链接之间做出决定。我知道 .lib 文件需要链接到您的 dll 文件。那么,我可以在我的项目中使用没有 .lib 的 dll 吗?
    【解决方案2】:

    FTDI D2XX 驱动程序的 API 有两个版本,每个版本都有一个 32 位和一个 64 位二进制文​​件,正如您可能从 rar 存档中的文件夹中猜到的那样:

    静态\i386、静态\amd64、i386、amd64

    您如何使用它们:

    • i386:这是32位动态联动版本。只需在附加依赖项链接器参数中指定此文件夹内的 .lib 文件,并在“附加库目录”下指定它的路径。还要确保您的编译代码(.dll 或 .exe)可以访问 ftd2xx.dll 文件。
    • amd64:这是64位动态联动版本。使用方法与 64 位版本中的 32 位版本相同。
    • Static/i386:顾名思义,这是32位的静态链接版本。包含 .lib 的方式与动态链接版本相同,只是这次不需要 ftd2xx.dll。而是在项目设置中指定 FTD2XX_STATIC 作为预处理器定义。我还想指出,FTDI D2XX API 的这个静态版本链接到运行时库的发布版本,因此它可能仅在发布版本中起作用。
    • Static/amd64:与Static/i386相同,只是这是64位静态链接版本。再次重申:无需 DLL,但需要定义 FTD2XX_STATIC,并且仅与运行时库的发布版本相关联。

    请记住,对于所有这些版本,您都使用存档中的相同头文件 ftd2xx.h。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      相关资源
      最近更新 更多