当我想将库链接到我的Qt项目时,我遇到了问题。当我试图在Qt中包含一个外部库(libnodave.lib)并试图构建它时,会发生以下错误。
main.obj:-1: Fehler: LNK2019: unresolved external symbol __imp_daveSetDebug referenced in function main
我很确定我在我的项目和.pro文件中包含了所有需要的文件。我使用“添加库”向导来添加库。在没有成功之后,我用Visual创建了一个最小的示例。当我将所有需要的文件都包含到VS项目中时,我可以构建并运行它,而不会出现错误。因此,我认为连接库一定有问题。我也尝试了Qt-外接程序,但是在那里也会发生同样的错误。
这里是我想要包含的库中的最小示例。
在Visual示例中,我将库路径、包含路径和库名添加到项目属性中。它起作用了。
我希望你能帮我解决问题。
编辑:
我想使用这个库从S7-300SPS设备中获取一些数据。
下面的代码是Qt的最小示例。
#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最小示例中的全部代码。
#include "stdafx.h"
#include <nodave.h>
int _tmain(int argc, _TCHAR* argv[])
{
daveInterface *di;
daveSetDebug(daveDebugConnect);
printf("Hello World\n");
return 0;
}代码很小,所以我认为里面没有错误。这就是为什么我认为这一定是Qt链接器之类的问题。
编辑:
我的.pro文件。
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发布于 2015-08-11 13:01:14
问题是Qt项目是64位,而我想要包含的库只有32位。所以我下载了32位版本的Qt,现在它可以工作了。我发现了一个错误,当我尝试用libnodave构建最小的示例时,没有任何64位的Qt库。
通过在VS2013中创建一个新的Qt项目,使用这解决方案,然后添加libnodave库,我可以更改它应该是64位构建还是32位构建。通过选择32位构建,Qt库会创建错误,而不是libnodave。当我选择64位构建时,只有libnodave会创建错误。
我希望这对其他人有用。
https://stackoverflow.com/questions/31919835
复制相似问题