Qt, вызов библиотечной функции дает неразрешенную ошибку внешнего символа

У меня проблемы с использованием внешней библиотеки, давайте начнем с начала. У меня есть библиотека trans2quik, состоящая из 3-х файлов: trans2quik .dll/.lib/.h

Итак, я использую Qt5.2, MSVC 2012 x64, win7. Я создаю простое приложение виджета qt и подключаю библиотеку, используя мастер «Добавить библиотеку», для создания LIBS, INCLUDEPATH и т. Д. В моем профессиональном файле. Затем, когда я вызываю любую функцию, я получаю неразрешенную ошибку внешнего символа:

widget.obj:-1: ошибка: LNK2019: неразрешенный внешний символ __imp_TRANS2QUIK_CONNECT в функции "public: __cdecl Widget::Widget(class QWidget *)" (??0Widget@@QEAA@PEAVQWidget@@@Z)

Код следующий:

ПРО файл:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET   = bot_test
TEMPLATE = app


SOURCES     += main.cpp\
           widget.cpp

HEADERS     += widget.h

win32: LIBS += -L$$PWD/ -lTRANS2QUIK

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

файл виджета.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <Windows.h> //For LPSTR and DWORD
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    //Some vars for lib's function
    LPSTR connectionParams;
    LPSTR errorMsg;
    DWORD  errorMsgSize;
    long   *errorCode;

};

#endif // WIDGET_H

файл виджета.cpp:

#include "widget.h"
#include "trans2quik_api.h"
#pragma comment(lib, "TRANS2QUIK.lib")
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    TRANS2QUIK_CONNECT(connectionParams, errorCode, errorMsg, errorMsgSize);
}

Итак, файлы .lib и .h библиотеки находятся в каталоге проектов, а LIB+= и INCLUDEPATH+= были сгенерированы QtCreator, поэтому я считаю, что это не проблема. Надеюсь на любую помощь, заранее спасибо.


person user3074856    schedule 14.01.2014    source источник
comment
Может надо убрать пробел в win32: LIBS?   -  person vahancho    schedule 14.01.2014


Ответы (1)


Проблема в том, что вы пытаетесь снова связать 32-битный trans2quik, тогда как ваше приложение, похоже, определено как 64-битное. Не смешивайте их. Либо создайте 32-битное приложение, либо используйте 64-битную библиотеку.

person lpapp    schedule 14.01.2014
comment
Ну, я построил его как 32-битное приложение, теперь программа неожиданно завершилась. Я сдаюсь. - person user3074856; 14.01.2014