2014-01-14 27 views
2

我在使用外部庫時遇到麻煩,讓我們從頭開始。我有一些庫trans2quik,由3個文件組成:trans2quik .dll/.lib/.hQt,庫函數調用給出無法解析的外部符號錯誤

因此,我使用Qt5.2,MSVC 2012 x64,win7。我使用「添加庫」嚮導創建簡單的qt窗口小部件應用程序和鏈接庫,用於在我的pro文件中生成LIBS,INCLUDEPATH等。然後,當我調用任何功能,我得到懸而未決extenal符號錯誤:

widget.obj:-1:錯誤:LNK2019:解析外部符號__imp_TRANS2QUIK_CONNECT函數 「市民:__cdecl的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和lib的.h文件是在項目目錄和LIB + =和INCLUDEPATH + =由QtCreator產生,所以我beliave它不是一個問題。希望任何halp,提前謝謝。

+0

也許你需要刪除'win32:LIBS'中的空格? – vahancho

回答

0

問題是,你試圖鏈接一個32位trans2quik,而你的應用程序似乎被定義爲64位。不要混合它們。可以構建32位應用程序,也可以使用64位庫。

+0

嗯,我已經將它構建爲32位應用程序,現在是「程序意外完成」。我放棄。 – user3074856

相關問題