未解析的外部符号"__declspec(DLL导入)



我想让libqglviewer在visual studio中工作,我已经安装了Qt5.2.0 64位的VS 2012。

我在项目设置中添加了QGLViewer和QT的include目录,以及QT的lib目录和lib文件(包括Release和Debug)。

我有一个简单的示例代码来测试它:
main.cpp
#include "simpleViewer.h"
#include <qapplication.h>
int main(int argc, char** argv)
{
 // Read command lines arguments.
 QApplication application(argc,argv);
 // Instantiate the viewer.
 /* Viewer viewer;

 viewer.setWindowTitle("simpleViewer");

// Make the viewer window visible on screen.
 viewer.show();
// Run main loop.
 return application.exec();*/
}

simpleViewer.h
#include <QGLViewer/qglviewer.h>
class Viewer : public QGLViewer
{
protected :
virtual void draw();
virtual void init();
virtual QString helpString() const;
};

当我试图编译它时,得到

 main.obj : error LNK2001: unresolved external symbol "_declspec(dllimport) public: virtual class QString __cdecl QGLViewer::mouseBindingsString(void)const " (__imp_?mouseBindingsString@QGLViewer@@UEBA?AVQString@@XZ)

有很多。我已经到处看了看,但我不明白是什么错误。

如果我注释掉除QApplication(argc,argv)之外的所有内容,它会编译,但如果我取消注释查看器查看器,我会得到很多错误。我不知道缺少什么,因为当我只使用QApplication时它会编译。

感觉链接中缺少了一些东西,但是我已经添加了我能找到的所有.lib文件。

如果我下载libQGLViewer并运行下面的

qmake -t vclib QGLViewer.pro -spec win32-msvc2013

然后在Visual Studio 2013中打开它(我今天没有成功地更改),它构建并生成QGLViewer2.dll文件,因为它应该根据libqglviewer主页上的说明。但如果我尝试simpleViewer示例,它会再次给出相同的问题。

在QT v5.7上有相同的错误。通过添加

解决
QT += widgets

编辑:

通过重新安装qt和qt visual studio插件,由于某种原因,插件搜索旧版本的qt,当这是固定的,我可以从libQGLViewer打开一个例子,并模仿所有的包括和链接,我可以最终得到它的工作。

你得到一个链接错误。常见的原因有:编译器找不到dll的.lib文件。您使用不同的编译器构建程序和dll,并且名称混淆使得无法在.lib文件中找到该函数。

尝试在QCreator中将QGLViewer项目添加到您的项目中,然后右键单击您的项目并选择"添加库",选择内部和引用QGLViewer,然后它们将一起编译避免和命名混淆问题,QCreator应该照顾库路径和所有。

我在QT 5.13.1中遇到过同样的问题。我试图使用QSerialPort,但根本无法实现构建。最后,通过将serialport添加到项目文件(xxx.pro)中,如以下所示,解决了这个问题:

QT += serialport

相关内容

  • 没有找到相关文章

最新更新