我在使用外部庫時遇到麻煩,讓我們從頭開始。我有一些庫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,提前謝謝。
也許你需要刪除'win32:LIBS'中的空格? – vahancho