2014-01-14 22 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

相关问题