Неразрешенный внешний символ "__declspec(dllimport)

Я пытаюсь заставить libqglviewer работать в visual studio, я установил Qt5.2.0 64-bit для VS 2012.

Я добавил каталоги include для QGLViewer и QT в настройках проекта вместе с lib-каталогом и lib-файлами для qt (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 Viewer, я получаю много ошибок. Я не вижу, чего не хватает, так как он компилируется, когда я использую только QApplication.

Такое ощущение, что в связи не хватает чего-то, но я добавил все.lib файлы, которые могу найти.

Во-первых, если я загружаю libQGLViewer и запускаю следующее

qmake -t vclib QGLViewer.pro -spec win32-msvc2013

и затем открывает его в Visual Studio 2013 (я сегодня безуспешно изменил), он строит и генерирует файлы QGLViewer2.dll, как и должно в соответствии с инструкцией на домашней странице libQGLViewers. Но если я попробую пример simpleViewer, он снова вызовет те же проблемы.

4 ответа

Решение

Редактировать:

Повторно переустанавливая все надстройки qt и qt visual studio, по какой-то причине надстройка искала старые версии qt, когда это было исправлено, я мог открыть пример из libQGLViewer и имитировать все включения и ссылки, которые я смог наконец получить. это на работу.

Была такая же ошибка на QT v5.7. Решил, добавив

QT += widgets

в файле.pro вверху.

Вы получаете ошибку компоновщика. Общие причины: Компилятор не может найти файл.lib для DLL. Вы создали программу и dll с другим компилятором, и искажение имени делает невозможным поиск функции в файле.lib.

Попробуйте добавить свой проект QGLViewer в ваш проект в QCreator, а затем щелкните правой кнопкой мыши на своем и выберите "добавить библиотеку", выберите внутренний и ссылочный QGLviewer, тогда вы оба скомпилируете вместе, избегая и называя проблемы со сборкой, а QCreator должен позаботиться о путях lib и всех,

Я столкнулся с той же проблемой в QT 5.13.1 . Я пытался использовать QSerialPort, но не удалось построить вообще. Наконец, решил это, добавив serialport в файл проекта (xxx.pro) следующим образом:

      QT += serialport
Другие вопросы по тегам