如何将ftd2xx.lib与C ++程序一起使用?

时间:2013-10-04 21:23:06

标签: c++ qt ftdi

我无法制作与FTDI芯片交互的程序。我不知道我可以提供多少关于芯片型号的信息。

我正在尝试使用API​​ FTDI提供与我拥有的芯片进行通信。我正在使用Qt Creator进行该程序,这是我第一次使用它。我发现的所有示例都使用include "ftd2xx.h"。好吧,我已经尝试了很多方法让它运转起来。我手动输入了ftd2xx.lib的目录,将文件移动到项目目录并选择“内部库”,使用原始目录并选择“外部库”,然后选择“系统库”。

给我一​​个不同错误的唯一方法是当我在项目目录中包含驱动程序包文件时,只包括带或不带LIBS += ...的头文件。即使这样,我也会收到393个错误NAME does not name a typeNAME not declared in scope

如何创建一个识别ftd2xx.lib的Qt Creator C ++项目并允许我使用ftd2xx.h中的函数?

编辑:我使用的是Windows 64位驱动程序package。在我的沮丧中,我忘了我应该包括这些重要的细节。

EDIT2:以下代码。

的main.cpp

#include <QCoreApplication>
#include <iostream>
#include "ftd2xx.h"
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cout << "test" << endl;

    return a.exec();
}

test.pro

#-------------------------------------------------
#
# Project created by QtCreator 2013-10-04T16:31:18
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/ -lftd2xx
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/ -lftd2xxd
else:unix: LIBS += -L$$PWD/ -lftd2xx

INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/

错误

Errors.png

所有这些都会导致更多NAME does not name a type错误。

1 个答案:

答案 0 :(得分:3)

ftd2xx标头中有很多Windows类型,所以在包含ftdi标头之前你需要包含windows.h。

.lib文件是一个DLL链接库,它提供了在运行时使用DLL所需的链接器信息。以下使用g ++进行编译和运行:

#include <windows.h>
#include <stdio.h>
#include <ftd2xx.h>
int main(int argc, char *argv[])
{
    DWORD version = 0;
    FT_STATUS status = FT_GetLibraryVersion(&version);
    printf("version %ld\n", version);
    return (status == FT_OK) ? 0 : 1;
}

使用编译:

g++ -Wall -Idriver -o check.exe check.cpp driver/i386/ftd2xx.lib

其中driver文件夹包含分布式FTDI Windows驱动程序包。 -lftd2xx将让链接器搜索名为libftd2xx.a的内容,因此只需显式提供.lib文件名。