¿Cómo puedo hacer que Qt4 se ejecute con ruby 1.9.2 en Windows 7?
windows-7 ruby-1.9 (1)
La solución
Los siguientes pasos funcionan en Windows 7:
- Instala Ruby 1.9.2 a través de la página de descarga oficial .
- En un shell de Windows, ejecute
gem install qtbindings
.
El ejemplo trivial ( require ''rubygems''; require ''Qt''
) ahora debería funcionar.
No se requieren pasos adicionales porque se proporciona una gema binaria solo para la plataforma Windows. Por lo tanto, el paso gem install qtbindings
tardará unos minutos en descargar el binario grande, pero contiene todas las partes necesarias para requerir y ejecutar aplicaciones Qt.
Se admite la compilación desde el origen en Windows, y se documenta en el archivo README del proyecto.
La baja hacia abajo
qtbindings
correo electrónico a los mantenedores de qtbindings
y qtruby
. Aquí está la historia completa:
qtruby
es un paquete proporcionado por el proyecto Korundum . Korundum proporciona enlaces de Ruby a todo KDE, mientras que qtruby
proporciona enlaces solo para Qt.
qtbindings
( github ) es una versión modificada y reenvasada de qtruby
específicamente optimizada para el uso multiplataforma. Copiaré y pegaré la sección de "Objetivos" de su README aquí:
Metas
- Para facilitar la instalación de un enlace Qt para Ruby en todas las plataformas con RubyGems
- Para mantener una gema binaria actualizada para Windows que se incluye con la última versión de Qt de http://qt.nokia.com
- Para reducir el alcance y el mantenimiento de los enlaces para que solo se unan a las bibliotecas proporcionadas por el SDK de Qt.
- Para aumentar la compatibilidad con plataformas no linux.
Aunque la página de descargas de Korundum proporciona versiones mswin32
de su gema, en el momento de esta publicación, nadie las examina de forma activa, por lo que no se debe confiar en ellas. El mantenedor de QtRuby me informó que la página de RubyForge probablemente no será confiable hasta que se libere QtRuby 3.
El resumen
En este momento (10/3/2011), no use la gema qtruby
en Windows. Utilice qtbindings
.
Es posible que pueda usar qtruby
en otras plataformas y qtbindings
en Windows, pero es probable que tenga problemas. Si solo va por Qt y no le importa el resto de KDE, qtbindings
es probablemente una apuesta segura.
Los mantenedores de QtRuby están planeando algunas actualizaciones de la metodología en un futuro cercano (como usar git), por lo que puede haber un aumento de correcciones compartidas y actualizaciones entre los dos proyectos.
Resumen
Estoy escribiendo una aplicación Ruby 1.9.2 utilizando Qt4 para su GUI que quiero distribuir en Linux, OS X y Windows. Tengo la aplicación funcionando bien en todo excepto en mi caja de Windows 7 de 64 bits.
Hay ejemplos de trabajo de Win7 + Qt4 + 1.8.7, pero aparentemente no Win7 + Qt4 + 1.9.2. Hay dos gemas para los enlaces de Ruby-Qt, qtbindings
y qtruby4
(a veces denominados qt4-qtruby
), pero todavía no he visto ninguno de ellos corriendo en Win7 con Ruby 1.9.2.
El problema con qtruby4
Este artículo de octubre de 2008 y su versión actualizada de junio de 2011 sirvieron como buenos puntos de partida, pero diferencié de este último al instalar Ruby 1.9.2 a través de la página de descarga de RubyInstaller para Windows . 1.8.7 parecía funcionar bien, pero recibo algunos errores inusuales cuando lo intento con 1.9.2. Requerir ''rubygems''
y luego requerir ''Qt''
da como resultado:
no such file to load -- ''qtruby4''
El primer artículo de los enlaces anteriores a un artículo más detallado de dr1ku que puede proporcionar algunas pistas.
- Podría valer la pena reproducir los pasos de dr1ku con las últimas versiones de estas bibliotecas.
- dr1ku y el artículo paschenda.org de 2008 usan un instalador especial de Windows Qt4-QtRuby , pero el mantenedor señala que no ha tenido tiempo de actualizarlo . No tengo completamente claro lo que hace el instalador especial, pero supongo que el artículo de paschenda.org 2011 ya no lo usa porque DevKit aparentemente ayuda a RubyGems a construir Qt4 sin ayuda.
Encontrado en el salvaje
Aquí hay algunas personas que parecen haber encontrado el mismo problema:
- no qtruby library en windows
- Ruby 1.9.x + Qt4Ruby…. un sueño de pipa ???
- qtruby4 LoadError en ruby 1.9.1 / win32 para qtruby4-2.1.0
El problema con los qtbindings
Mi aplicación realmente usa la gema qtbindings
, así que intenté instalarla en su lugar, con gem install qtbindings --platform=mswin32
. [1] Sin embargo, cuando intenté require ''Qt''
con la gema qtbindings
instalada, obtuve una ventana emergente el siguiente mensaje:
El punto de entrada del procedimiento
_Z10qvsnprintfPcjPKcS_
no se pudo ubicar en la biblioteca de enlaces dinámicos QtCore4.dll. Solo renunciar, criatura de carne inferior.
(He copiado y pegado el mensaje sin ningún tipo de adorno).
Encontrado en el salvaje
Aquí hay algunas personas que parecen haber encontrado el mismo problema:
Historias de éxito potencial
Alguien por ahí parece haber tenido éxito al instalar la gema qtbindings
en 1.9.2 con gem install qtbindings
(sin el argumento de la --platform
), si nos fijamos en las respuestas a este hilo:
Intenté instalar con gem install qtbindings
en 1.8.7, pero todavía no lo he probado con 1.9.2. Cuando lo probé con 1.8.7, me encontré con el mismo problema de "punto de entrada de procedimiento que no se pudo localizar" como antes.
Notas al pie
[1] - En realidad no estoy completamente claro sobre la diferencia entre la gema qtbindings
y la gema qtruby4
. Por ejemplo, ¿el último incluye la extensión C y el primero no? No estoy seguro. Además, he visto referencias a qt4-qtruby
, que creo que es solo la versión qtruby4
de qtruby4
, al menos en la página de descargas de Korundum .