外部库的QtCreator LNK2019错误

时间:2015-08-10 12:39:46

标签: c++ visual-studio qt dll include

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

main.obj:-1: Fehler: LNK2019: unresolved external symbol __imp_daveSetDebug referenced in function 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

1 个答案:

答案 0 :(得分:3)

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

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

我希望它对其他人有用。