Неразрешенный внешний символ "__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