【问题标题】:Qt, Library function calling gives unresolved external symbol errorQt,库函数调用给出未解决的外部符号错误
【发布时间】:2014-02-02 00:49:48
【问题描述】:

我在使用外部库时遇到问题,让我们从头开始吧。 我有一些库 trans2quik,它由 3 个文件组成:trans2quik .dll/.lib/.h

所以,我使用 Qt5.2、MSVC 2012 x64、win7。我使用“添加库”向导创建了简单的 qt 小部件应用程序和链接库,用于在我的 pro 文件中生成 LIBS、INCLUDEPATH 等。然后,当我调用任何函数时,我得到未解决的外部符号错误:

widget.obj:-1: error: LNK2019: unresolved external symbol __imp_TRANS2QUIK_CONNECT in function "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/

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 生成的,所以我相信这不是问题。希望有任何帮助,在此先感谢您。

【问题讨论】:

  • 也许您需要删除win32: LIBS 中的空间?

标签: c++ qt qmake lnk2019 qtgui


【解决方案1】:

问题是您正试图重新链接 32 位 trans2quik,而您的应用程序似乎被定义为 64 位。不要混合它们。要么构建 32 位应用程序,要么使用 64 位库。

【讨论】:

  • 好吧,我已经将它构建为 32 位应用程序,现在它是“程序意外完成”。我放弃了。
猜你喜欢
  • 1970-01-01
  • 2018-11-23
  • 2021-04-15
  • 2011-09-03
  • 2010-11-20
  • 1970-01-01
  • 2016-11-26
  • 2023-03-05
  • 2011-10-21
相关资源
最近更新 更多