未解析的外部符号“__declspec(dllimport)
unresolved external symbol "__declspec(dllimport)
我正在尝试让 libqglviewer 在 visual studio 中工作,我已经为 VS 2012 安装了 Qt5.2.0 64 位。
我在项目设置中添加了 QGLViewer 和 QT 的包含目录以及 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)
之外的所有内容,它会编译,但如果我取消注释 Viewer 查看器,我会收到很多错误。我没有看到缺少什么,因为它在我只使用 QApplication 时编译。
感觉链接少了点什么,不过我已经添加了我能找到的所有 .lib 文件。
一件事是,如果我下载 libQGLViewer 和 运行 以下
qmake -t vclib QGLViewer.pro -spec win32-msvc2013
然后在 Visual Studio 2013 年打开它(我今天更改但没有成功)它会根据 libQGLViewers 主页上的说明构建并生成 QGLViewer2.dll 文件。但是,如果我尝试 simpleViewer 示例,它会再次出现同样的问题。
您收到链接器错误。常见原因有:
编译器找不到 dll 的 .lib 文件。
您使用不同的编译器构建了程序和 dll,名称修改导致无法在 .lib 文件中找到该函数。
尝试将他的 QGLViewer 项目添加到您在 QCreator 中的项目中,然后右键单击您的项目并选择 'add libary' 选择内部和引用 QGLviewer,然后您将一起编译避免和命名 mnlging 问题,QCreator 应该小心lib 路径和所有。
编辑:
通过重新安装所有 qt 和 qt visual studio 加载项,出于某种原因,加载项搜索旧版本的 qt,修复后我可以从 libQGLViewer 打开一个示例并模仿所有包含和链接我终于可以让它工作了。
在 QT v5.7 上有同样的错误。通过添加
解决
QT += widgets
在顶部的 .pro 文件中。
我在 QT 5.13.1 中遇到过同样的问题。我试图使用 QSerialPort
,但根本无法构建。最后,通过将 serialport
添加到项目文件 (xxx.pro) 来解决它,如下所示:
QT += serialport
我正在尝试让 libqglviewer 在 visual studio 中工作,我已经为 VS 2012 安装了 Qt5.2.0 64 位。
我在项目设置中添加了 QGLViewer 和 QT 的包含目录以及 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)
之外的所有内容,它会编译,但如果我取消注释 Viewer 查看器,我会收到很多错误。我没有看到缺少什么,因为它在我只使用 QApplication 时编译。
感觉链接少了点什么,不过我已经添加了我能找到的所有 .lib 文件。
一件事是,如果我下载 libQGLViewer 和 运行 以下
qmake -t vclib QGLViewer.pro -spec win32-msvc2013
然后在 Visual Studio 2013 年打开它(我今天更改但没有成功)它会根据 libQGLViewers 主页上的说明构建并生成 QGLViewer2.dll 文件。但是,如果我尝试 simpleViewer 示例,它会再次出现同样的问题。
您收到链接器错误。常见原因有: 编译器找不到 dll 的 .lib 文件。 您使用不同的编译器构建了程序和 dll,名称修改导致无法在 .lib 文件中找到该函数。
尝试将他的 QGLViewer 项目添加到您在 QCreator 中的项目中,然后右键单击您的项目并选择 'add libary' 选择内部和引用 QGLviewer,然后您将一起编译避免和命名 mnlging 问题,QCreator 应该小心lib 路径和所有。
编辑:
通过重新安装所有 qt 和 qt visual studio 加载项,出于某种原因,加载项搜索旧版本的 qt,修复后我可以从 libQGLViewer 打开一个示例并模仿所有包含和链接我终于可以让它工作了。
在 QT v5.7 上有同样的错误。通过添加
解决QT += widgets
在顶部的 .pro 文件中。
我在 QT 5.13.1 中遇到过同样的问题。我试图使用 QSerialPort
,但根本无法构建。最后,通过将 serialport
添加到项目文件 (xxx.pro) 来解决它,如下所示:
QT += serialport