未解析的外部符号“__declspec(dllimport)

时间:2015-08-09 20:11:46

标签: qt visual-studio-2012 qglviewer

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

我在项目设置中添加了QGLViewer和QT的include目录以及lib目录和qt的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)以外的所有内容,它会编译,但如果我取消注释Viewer查看器,我会收到很多错误。当我只使用QApplication时,我没有看到丢失的内容。

感觉链接中缺少某些内容,但我添加了所有可以找到的.lib文件。

有一件事是,如果我下载libQGLViewer并运行以下

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

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

3 个答案:

答案 0 :(得分:1)

编辑:

通过重新安装所有qt和qt visual studio插件,由于某种原因,加载项搜索旧版本的qt,当修复后我可以从libQGLViewer打开一个示例并模仿所有包含和链接我最终可以让它发挥作用。

答案 1 :(得分:0)

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

尝试将QGLViewer项目添加到QCreator中的项目中,然后右键单击您的项目并选择“添加库”#39;选择内部和参考QGLviewer,然后您将同时编译避免和命名mnlging问题,QCreator应该处理lib路径和所有。

答案 2 :(得分:0)

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

解决了这个问题
QT += widgets

位于顶部的.pro文件中。