【发布时间】:2015-03-03 17:19:01
【问题描述】:
所以我已经玩了一个星期了,我认为是时候调用一些备份了。我目前正在开发一些软件来与我正在开发的一些板进行通信。这些板有来自 FTDI 的 ft230 芯片,所以我使用他们的 FTD2XX 库来与它们交互。这就是问题的开始。
很长一段时间以来,我一直在为某些函数而不是其他函数收到“未定义引用”错误。所以我认为链接器是正确的,它只是不适用于所有功能。我的环境是基于 QT 5.4.0 的 QtCreator 3.3.0。编译器是 MinGW 4.9.1。操作系统为 Windows 8.1。我已经从 ftdichips.com 下载了 8.1 的最新驱动程序。以下是给我问题的函数:
#include <windows.h>
#include "ftdiDriver/ftdi.h"
#include <ftd2xx.h>
#include <QDebug>
void ftdiConnect(void){
// Variables for FTDI communicaiton
FT_STATUS ftStatus;
FT_DEVICE_LIST_INFO_NODE *devInfo;
DWORD numDevs;
// create the device information list
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
qDebug() << "Number of devices is: " << numDevs;
}
if (numDevs > 0) {
// allocate storage for list based on numDevs
devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
// get the device information list
ftStatus = FT_GetDeviceInfoList(devInfo, &numDevs);
if (ftStatus == FT_OK) {
for (int i = 0; i < numDevs; i++) {
qDebug() << "Dev: " << i;
qDebug() << " Flags: " << devInfo[i].Flags;
qDebug() << " Type: " << devInfo[i].Type;
qDebug() << " ID: " << devInfo[i].ID;
qDebug() << " LocId: " << devInfo[i].LocId;
qDebug() << " SerialNumber: " << devInfo[i].SerialNumber;
qDebug() << " Description: " << devInfo[i].Description;
qDebug() << " ftHandle: " << devInfo[i].ftHandle;
}
}
}
}
我搜索了几个论坛。似乎大多数人都能够将 .lib 文件包含在他们的项目文件中,并且一切似乎都有效。我已经尝试了这个的每一种组合,我有同样的问题。由于(例如 FT_ListDevices)的某些功能,我认为这不是问题所在。某些功能起作用而其他功能不起作用是没有意义的。我给 FTDIchips 打了电话,他们告诉我,他们有时间查看问题时会回复我,但同时不知道有什么可以尝试的。
如果您认为这会有所帮助,我也可以在此问题中包含项目文本。我只是不想让它变得混乱。
【问题讨论】:
-
您得到了哪些“未定义的引用错误”?是否还有 main 函数或其他入口点?