【问题标题】:One of the QImage constructors gives me a linker error, but another constructor doesn't?一个 QImage 构造函数给了我一个链接器错误,但另一个构造函数没有?
【发布时间】:2011-04-24 00:51:42
【问题描述】:

在我的项目中,我使用 QImage 来保存生成的图片,但是当我调用时

QImage image(width, height, QImage::Format_RGB32);

Visual Studio 编译器给了我链接器错误:

error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QImage::~QImage(void)" (__imp_??1QImage@@UAE@XZ) referenced in function "void __cdecl lightTracer(void)" (?lightTracer@@YAXXZ)

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QImage::QImage(int,int,enum QImage::Format)" (__imp_??0QImage@@QAE@HHW4Format@0@@Z) referenced in function "void __cdecl lightTracer(void)" (?lightTracer@@YAXXZ)

但如果我将上面的代码替换为:

QImage image();

我没有收到任何链接器错误,并且编译正常。

这里有什么问题? :(

更新:为了确保 Qt 正常工作,我尝试制作一个 QString:

 QString s("hello world");

这工作正常。

【问题讨论】:

    标签: c++ declaration


    【解决方案1】:
    QImage image();
    

    这不声明对象,也不调用默认构造函数。它声明了一个名为image 的函数,它没有参数并返回一个QImage

    这将调用默认构造函数:

    QImage image;
    

    这也可能会给你一个链接器错误;确保您链接到任何库 QImage 中定义。

    【讨论】:

    • 对。您需要链接到具有 QImage 定义的 Qt 库。
    • 你能详细说明我该怎么做吗?谢谢。
    • 您需要查看 Qt 文档以查找需要链接的库文件,并将该库添加到 Visual C++ 项目属性中“链接器 => 常规”下的“附加依赖项” .没用过Qt,不知道你需要什么库。
    【解决方案2】:

    我在this link 找到了这个问题的提示。

    我通过在 Qt Project Settings->Qt Modules 中包含 GUI 库模块解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2010-09-23
      • 2014-03-12
      相关资源
      最近更新 更多