【问题标题】:unresolved external symbol "__declspec(dllimport)未解析的外部符号“__declspec(dllimport)
【发布时间】:2021-08-15 18:41:45
【问题描述】:

我正在尝试让 libqglviewer 在 Visual Studio 中工作,我已经为 VS 2012 安装了 Qt5.2.0 64 位。

我在项目设置中添加了 QGLViewer 和 QT 的包含目录以及 qt 的 lib 目录和 lib 文件(发布和调试)。

我有一个简单的示例代码来测试它:

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 中打开它(我今天更改但没有成功)它根据 libQGLViewers 主页上的说明构建并生成 QGLViewer2.dll 文件。但是,如果我尝试 simpleViewer 示例,它会再次出现相同的问题。

【问题讨论】:

标签: qt visual-studio-2012 qglviewer


【解决方案1】:

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

QT += widgets

在顶部的 .pro 文件中。

【讨论】:

    【解决方案2】:

    编辑:

    通过再次重新安装所有 qt 和 qt Visual Studio 插件,由于某种原因,插件搜索了旧版本的 qt,修复后我可以从 libQGLViewer 打开一个示例并模仿所有包含和链接我终于可以让它工作了。

    【讨论】:

      【解决方案3】:

      您收到链接器错误。常见原因有: 编译器找不到 dll 的 .lib 文件。 您使用不同的编译器构建了程序和 dll,并且名称修饰导致无法在 .lib 文件中找到该函数。

      尝试在 QCreator 中将 QGLViewer 项目添加到您的项目中,然后右键单击您的项目并选择“添加库”选择内部并引用 QGLviewer,然后您将一起编译避免和命名 mnlging 问题,并且 QCreator 应该处理库路径和所有。

      【讨论】:

      • 是的,我安装了visual studio qt-plugin,这次正确安装并在visual studio中将示例项目作为qt-project打开并设法编译它。所以我已经接近让它工作了。
      【解决方案4】:

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

      QT += serialport
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 2011-02-09
        • 2015-06-27
        相关资源
        最近更新 更多