我想让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