c++ - QtCreator LNK2019 外部库错误

标签 c++ visual-studio qt dll include

当我想将库链接到我的 Qt 项目时遇到问题。 当我尝试在 Qt Creator 中包含外部库 (libnodave.lib) 并尝试构建它时,出现以下错误。

main.obj:-1: Fehler: LNK2019: 未解析的外部符号 __imp_daveSetDebug 在函数 main 中引用

我很确定我的项目和 .pro 文件中包含了所有需要的文件。我使用“添加库”向导来添加库。 在使用 Qt Creator 没有成功之后,我使用 Visual Studio 创建了一个最小示例。当我将所有需要的文件包含到 VS 项目中时,我可以毫无错误地构建和运行它。所以我认为Qt Creator链接库一定有问题。我也尝试了 Qt-Visual-Studio-Add-in,但那里发生了同样的错误。

Here是我想要包含的库的最小示例。

在 Visual Studio 示例中,我将库路径、包含路径和库名称添加到项目属性中。它有效。

我希望你能帮我解决我的问题。

编辑:
我想使用该库从 S7-300 SPS 设备获取一些数据。

以下代码是 Qt Creator 中的最小示例。

#include <QCoreApplication>
#include <QDebug>
#include <nodave.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    daveInterface *di;
    daveSetDebug(daveDebugConnect); // Function of libnodave Library
    qDebug() << "Hello World";

    return a.exec();
}

这是 Visual Studio 最小示例的完整代码。

#include "stdafx.h"
#include <nodave.h>


int _tmain(int argc, _TCHAR* argv[])
{
    daveInterface *di;
    daveSetDebug(daveDebugConnect);
    printf("Hello World\n");

    return 0;
}

代码很小,所以我认为里面没有错误。 这就是为什么我认为它一定是 Qt 链接器或类似问题的原因。

编辑:
我的简历。

QT       += core
QT       -= gui

TARGET = qtminimal
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app   
SOURCES += main.cpp

win32: LIBS += -L$$PWD/../libnodave-0.8.5/win/ -llibnodave

INCLUDEPATH += $$PWD/../libnodave-0.8.5
DEPENDPATH += $$PWD/../libnodave-0.8.5

最佳答案

问题是 Qt 项目是 64 位的,而我要包含的库只有 32 位。 所以我下载了 32 位版本的 Qt,现在它可以工作了。 当我尝试仅使用 libnodave 构建最小示例而没有任何 64 位 Qt 库时,我发现了错误。

通过在 VS2013 中创建一个新的 Qt 项目,使用 this解决方法并在之后添加 libnodave 库我可以更改它应该是 64 位还是 32 位构建。通过选择 32 位版本,Qt 库会产生错误,但 libnodave 库不会。当我选择 64 位构建时,只有 libnodave 会产生错误。

我希望它对其他人有用。

关于c++ - QtCreator LNK2019 外部库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919835/

相关文章:

c++ - Qt:将 C++ 中的列表连接到 QML 中的 ListView

c++ - 视觉检漏仪不起作用

c++ - 文件读取功能只读取第一行然后退出

asp.net - 如何将 ASP.NET 与 Visual Studio 2008 结合使用

c++ - 比较 QKeyPress 事件

c++ - 子类化 QCompleter,我的子类中的虚拟插槽未被调用

python - 无法加载 Boost.Python 模块 - undefined symbol

c++ - 为什么我需要三个嵌套大括号来调用对二维数组进行常量引用的赋值运算符?

c++ - 确定处理器对 SSE2 的支持?

visual-studio - 在Visual Studio中执行dos命令的交互式窗口