2014-01-14 4 views
2

У меня возникают проблемы с использованием внешней библиотеки, давайте начнем с начала. У меня есть библиотека trans2quik, которая состоит из 3 файлов: trans2quik .dll/.lib/.hQt, вызов функции библиотеки дает нерешенную ошибку внешнего символа

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

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

код следующим образом:

PRO файл:

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/ 

widget.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 

widget.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 находятся в каталоге проектов и LIB = + и INCLUDEPATH + = генерировались QtCreator, поэтому я beliave это не проблема. Надеюсь на любую остановку, спасибо заранее.

+0

Возможно, вам нужно удалить место в поле 'win32: LIBS'? – vahancho

ответ

0

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

+0

Ну, я создал его как 32-битное приложение, теперь это «Программа неожиданно закончилась». Я сдаюсь. – user3074856