Подтвердить что ты не робот

Как я могу запустить Qt4 с ruby ​​1.9.2 в Windows 7?

Резюме

Я пишу приложение Ruby 1.9.2, используя Qt4 для своего графического интерфейса, который я хочу распространять в Linux, OS X и Windows. У меня приложение работает отлично на все, кроме моего 64-битного окна Windows 7.

Существуют рабочие примеры Win7 + Qt4 + 1.8.7, но, видимо, не Win7 + Qt4 + 1.9.2. Есть два камня для привязок Ruby-Qt, qtbindings и qtruby4 (иногда называемый qt4-qtruby), но я еще не видел ни одного из них, работающих на Win7 с Ruby 1.9.2.

Проблема с qtruby4

Эта статья с октября 2008 года и ее обновленная версия с июня 2011 года послужили хорошей отправной точкой, но Я отличался от последнего, установив Ruby 1.9.2 через страницу загрузки RubyInstaller для Windows. 1.8.7, казалось, работал нормально, но я получаю некоторые необычные ошибки, когда я пытаюсь использовать его с 1.9.2. Требование 'rubygems', а затем требующее 'Qt' приводит к:

no such file to load -- 'qtruby4'

Первая статья выше ссылается на более подробную статью из dr1ku, которая может предоставить некоторые подсказки.

  • Возможно, стоит воспроизвести шаги dr1ku с последними версиями этих библиотек.
  • dr1ku и статья 2008 paschenda.org используют специальный установщик Windows Qt4-QtRuby, но сопровождающий отмечает, что он не успел обновить его. Я не совсем понимаю, что делает специальный установщик, но я полагаю, что статья paschenda.org 2011 больше не использует его, потому что DevKit якобы помогает RubyGems самостоятельно строить Qt4 без посторонней помощи.

Найден в дикой природе

Вот некоторые люди, которые, похоже, столкнулись с одной и той же проблемой:

Проблема с qtbindings

В моем приложении на самом деле используется камень qtbindings, поэтому я попытался установить его вместо gem install qtbindings --platform=mswin32. [1] Однако, когда я попытался require 'Qt' с установленным камнем qtbindings, я получил всплывающее окно Windows со следующим сообщением:

Не удалось найти точку входа процедуры _Z10qvsnprintfPcjPKcS_в библиотеке динамических ссылок QtCore4.dll. Просто сдайся, низшее плотное существо.

(У меня есть копия и вставка сообщения без каких-либо украшений вообще.)

Найден в дикой природе

Вот некоторые люди, которые, похоже, столкнулись с одной и той же проблемой:

Потенциальные истории успеха

Кто-то, похоже, добился успеха, установив qtbindings gem на 1.9.2 с аргументом gem install qtbindings (no --platform), если вы посмотрите ответы на этот поток:

Я попытался установить с помощью gem install qtbindings на 1.8.7, но у меня not еще не было версии 1.9.2. Когда я попробовал его с 1.8.7, я столкнулся с тем же вопросом, что и "точка входа в систему, не была найдена".

Сноски

[1] - На самом деле я не совсем понимаю разницу между драгоценным камнем qtbindings и драгоценным камнем qtruby4. Например, включает ли последнее расширение C, а первое - нет? Я не уверен. Кроме того, я видел ссылки на qt4-qtruby, который, я думаю, является только версией mswin32 qtruby4, по крайней мере, насколько я могу судить на странице загрузки Korundum.

4b9b3361

Ответ 1

Решение

В Windows 7 выполняются следующие шаги:

Теперь должен работать тривиальный пример (require 'rubygems'; require 'Qt').

Никаких дополнительных шагов не требуется, поскольку двоичный камень предоставляется только для платформы Windows. Таким образом, шаг gem install qtbindings займет несколько минут, поскольку он загружает большой двоичный файл, но содержит все необходимые части, требующие и запускающие приложения Qt.

Компиляция из источника в Windows поддерживается и документируется в файле README проекта.

Низкий

Я отправил письма сопровождающим qtbindings и qtruby. Вот полная история:

qtruby представляет собой пакет, предоставляемый проектом Korundum. Korundum обеспечивает привязки Ruby ко всем KDE, тогда как qtruby предоставляет привязки только для Qt.

qtbindings (github) представляет собой модифицированную и повторно упакованную версию qtruby, специально оптимизированную для межплатформенного использования. Я скопирую и вставлю раздел "Цели" из README здесь:

Цели

  • Чтобы упростить установку привязки Qt для Ruby на всех платформах с использованием RubyGems
  • Чтобы поддерживать обновленную бинарную жемчужину для Windows, которая поставляется в комплекте с последней версией Qt от http://qt.nokia.com
  • Чтобы уменьшить объем и поддерживать привязки только для привязки к библиотеки, предоставленные Qt SDK.
  • Чтобы повысить совместимость с платформами, отличными от Linux,

Хотя страница загрузки Корундума предоставляет mswin32 версии своего драгоценного камня, на момент написания этой статьи они не активно проверяются кем-либо, и поэтому не следует полагаться на. Ответчик QtRuby сообщил мне, что страница RubyForge, вероятно, не будет надежной, пока не будет выпущена QtRuby 3.

Рекомендация

Прямо сейчас (10/3/2011), не используйте драгоценный камень qtruby в Windows. Используйте qtbindings.

Возможно, вы можете использовать qtruby на других платформах и qtbindings в Windows, но вы, вероятно, будете задавать проблемы. Если вы просто собираетесь на Qt и не заботитесь о остальной части KDE, qtbindings, вероятно, является безопасной ставкой.

Составители QtRuby планируют некоторые обновления методологии в ближайшем будущем (например, используя git), поэтому могут быть увеличены общие исправления и обновления между двумя проектами.