Один из конструкторов QImage выдает ошибку компоновщика, а другой - нет? - PullRequest
2 голосов
/ 14 апреля 2011

В моем проекте я использую 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");

и это сработало правильно.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011
QImage image();

Это не объявляет объект и не вызывает конструктор по умолчанию. Он объявляет функцию с именем image, которая не имеет параметров, и возвращает QImage.

Это вызовет конструктор по умолчанию:

QImage image;

Это, вероятно, также даст вам ошибку компоновщика; убедитесь, что вы ссылаетесь на любую библиотеку, в которой определена QImage.

1 голос
/ 14 апреля 2011

Я нашел подсказку к этой проблеме на этой ссылке .

Я исправил проблему, включив модуль библиотеки GUI в Настройки проекта Qt-> Модули Qt.

...