Компилируем простой Qt "Hello World!" приложение в Visual Studio 2010 Express? - PullRequest
5 голосов
/ 13 июня 2010

Я пытаюсь собрать базовый Qt "Привет, мир!"приложение внутри Visual Studio.

Я получил moc шаг к работе (я думаю), но теперь я в растерянности относительно того, как исправить эту ошибку компоновщика:

1>moc_mainwindow.obj : error LNK2001: unresolved external symbol "public:
static struct QMetaObject const QMainWindow::staticMetaObject"
(?staticMetaObject@QMainWindow@@2UQMetaObject@@B)

Я много искал, но я в растерянности.

Вот мои каталоги включения:

  • i:\Qt\4.6.3\include\QtCore;
  • i:\Qt\4.6.3\include\QtGui;
  • i:\Qt\4.6.3\include;
  • i:\Qt\4.6.3\include\ActiveQt;
  • reease;
  • .;
  • i:\Qt\4.6.3\mkspecs\win32-msvc2008

Вот библиотеки, с которыми я ссылаюсь:

  • i:\Qt\4.6.3\lib\QtGui4.lib;
  • i:\Qt\4.6.3\lib\QtCore4.lib;
  • gdi32.lib;
  • comdlg32.lib;
  • oleaut32.lib;
  • imm32.lib;
  • winmm.lib;
  • winspool.lib;
  • ws2_32.lib;
  • ole32.lib;
  • user32.lib;
  • advapi32.lib;
  • libpng.lib;
  • msimg32.lib;
  • shell32.lib;
  • kernel32.lib;
  • uuid.lib;

У кого-нибудь есть идеи?

Ответы [ 5 ]

6 голосов
/ 20 января 2011

qmake сгенерирует moc voodoo из файла заголовка в файле .pro. Поскольку по звучанию вы используете не qmake, а собственный проект Visual Studio, это, вероятно, является причиной проблемы.

Если вы используете qmake для создания своего визуального студийного проекта, все ваши проблемы исчезнут и жизнь будет сладкой. Наверное!

Я пользуюсь открытым 2010.05; очевидно, вы хотите заменить правильный путь для вашей версии.

настройка среды

запуск командной среды 2010 из меню «Пуск»
-set include =% include%; C: \ Qt \ 2010.05 \ qt \ include
-set lib =% lib%; C: \ Qt \ 2010.05 \ qt \ lib -set путь =% путь%; C: \ Qt \ 2010.05 \ qt \ bin
-set QMAKESPEC = win32-msvc2010

написать код, создать файлы и т. Д.

генерирует начальный pro и make-файл и запускает VS
-qmake -tp vc
-qmake

теперь у вас должен быть make-файл - проверьте, что он работает, запустив:
-nmake

сейчас запускаем визуальную студию
-VCExpress.exe / useenv
-XXX.vcxproj теперь можно открыть

Если это не сработает, возможно, вам нужно собрать qt против visual studio. Это очень просто - перейдите в каталог qt (из окна командной строки Visual Studio Express) и введите:

configure.exe -platform win32-msvc2010 -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-multimedia -no-qt3support -fast
2 голосов
/ 22 августа 2011

Мне удалось заставить QT работать с Visual C ++ Express 2010, используя http://rajorshi.net/blog/2009/01/using-qt-with-msvc-express-2008/ и http://portfolio.delinkx.com/files/Qt.pdf в качестве руководства.На всякий случай, если у кого-то все еще есть проблемы.

2 голосов
/ 13 июня 2010

Вы не можете установить плагин Qt VS в Express Edition VC ++. Предполагая, что у вас есть moc для компиляции, вы также должны убедиться, что вы включаете соответствующие библиотеки (* .lib файлы) во время компоновки. Это идет в свойствах проекта> компоновщик> вход> дополнительные зависимости.

Вам потребуется как минимум qtcore4.lib.

Также убедитесь, что путь к библиотеке Qt находится в пути поиска вашей библиотеки. На моем компьютере это c: \ qt \ 4.6.2 \ lib.

0 голосов
/ 03 мая 2018

Вам нужно добавить команды для генерации метаклассов QT, а затем также включить сгенерированные файлы в ваш проект в виде кода C ++.

Генерация метаклассов QT:

  • Сначала добавьте свой путь к корзине QT в каталог исполняемых файлов. (Это в Свойствах конфигурации> Каталоги VC ++)

  • Добавьте в проект заголовочные файлы, содержащие макросы Q_OBJECT.

  • Выберите несколько файлов заголовка, затем щелкните правой кнопкой мыши файл заголовка и выберите Свойства.

    • Измените «Тип элемента» с «Заголовок C / C ++» на «Инструмент пользовательской сборки».
    • Установить в командной строке следующее: moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"
    • Установить описание на это: QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp (необязательно)
    • Установите для этого значения: $(ProjectDir)MetaObjects\moc_%(Filename).cpp
  • Запустите Build, чтобы он генерировал код метаобъекта
  • Добавьте сгенерированные файлы C ++ из папки Metaobjects каталога проекта в ваш проект
0 голосов
/ 13 июня 2010

Вы сначала создавали визуальный студийный проект, используя qmake? Проблема, кажется, компиляция moc. У вас установлен плагин qt и путь qt в переменных среды? Можете ли вы добавить свой привет код мира, чтобы я мог взглянуть на него?

...