Ошибка компоновщика: Qt и libusb-win32 - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь разработать приложение Qt GUI , которое будет взаимодействовать с платой через USB. Я использую библиотеку libusb-win32 v1.2.5.0 .

Когда я компилирую приложение, возникают следующие ошибки:

. / Debug / thread_usb_comm.o: в функции `ZN15thread_usb_comm15find_usb_deviceEtt ':

thread_usb_comm.cpp: 15: неопределенная ссылка на 'usb_find_busses'
thread_usb_comm.cpp: 16: неопределенная ссылка на 'usb_find_devices'
thread_usb_comm.cpp: 18: неопределенная ссылка на «usb_get_busses»
thread_usb_comm.cpp: 26: неопределенная ссылка на «usb_open»

collect2: ld вернул 1 статус выхода
mingw32-make [1]: [debug / CALSYS11_calib_app.exe] Ошибка 1
mingw32-make: [отладка] Ошибка 2

Код приложения:

(заголовочный файл)

#ifndef THREAD_USB_COMM_H
#define THREAD_USB_COMM_H

#include <QThread>
#include <QtDebug>
#include "CALSYS11.h"
#include <lusb0_usb.h>

class thread_usb_comm : public QThread
{
    Q_OBJECT

public:
    thread_usb_comm();

private:
    bool device_connected;
    usb_dev_handle *p_usb_device;

    bool find_usb_device(
       unsigned short vendor_id,
       unsigned short product_id
    );
};

#endif // THREAD_USB_COMM_H

(исходный файл)

#include "thread_usb_comm.h"

thread_usb_comm::thread_usb_comm()
{
    device_connected = false;
}

bool thread_usb_comm::find_usb_device(
    unsigned short vendor_id,
    unsigned short product_id
)
{
    struct usb_bus *bus;
    struct usb_device *dev;
    usb_find_busses();
    usb_find_devices();

    for (bus = usb_get_busses(); bus; bus = bus->next)
    {
        for (dev = bus->devices; dev; dev = dev->next)
        {
            if ((dev->descriptor.idVendor == vendor_id) &&
                (dev->descriptor.idProduct == product_id))
            {
                qDebug ("Device found");
                p_usb_device = usb_open(dev);
                if (0 == p_usb_device)
                {
                    qCritical ("Could not open USB device");
                    return false;
                }
                device_connected = true;
                return true;
            }
        }
    }

    qDebug ("Cannot find specified device");
    return false;
}

Я добавил ссылку на библиотеку libusb в файле .pro:

LIBS + = -L \ path \ to \ libusb-win32 \ lib \ gcc -lusb

Я разрабатываю на Windows 7 .

Спасибо,
Johann

1 Ответ

0 голосов
/ 13 октября 2011

Попробуйте построить релиз вместо отладки, или статическая библиотека несовместима с версией компилятора (я столкнулся с той же проблемой, когда пытался собрать старую статическую библиотеку с MinGW 4.4)

...