Problema al compilar qxmpp
-
de la forma normal.. abro el proyecto con qt y le doy build.. y también e probado con qmake y luego make y make install .. de igual forma tambien le e pasado los parámetros correspondientes para que compile QXMPP statico pero todo sigue igual.. te dejo la url del proyecto para que vos proba y veais de lo que te hablo..
https://github.com/qxmpp-project/qxmpp
si logras compilar un proyecto con qxmpp sin depender de las dll me salvas la vida XD
Salu2.
-
¿Probaste pasandole la opción QXMPP_LIBRARY_TYPE=staticlib?
@i686-w64-mingw32-qmake-qt5 PREFIX=/usr QXMPP_LIBRARY_TYPE=staticlib QXMPP_USE_SPEEX=1 QXMPP_USE_VPX=1 QXMPP_USE_THEORA=1@
Probado de Arch Linux y compila sin problemas.
-
El .a es la librería estática, ¿De que tamaño es el archivo? a mí me da unos 40Mb con Vorbis, theora y Vpx incluidos. ¿Probaste linkearlo en tu programa?
-
si me da un aproximado de 9 MB.. de que forma tu linkeas el .a al programa? yo lo e linkeado andole click secundario agregar libreria etc etc.. agrego los headers y todo eso.. el programa funciona.. pero da problemas de dll.. q le hace falta la libreria dll de xmpp.. y para que funcione tengo q agregarlas a la carpeta :S cosa q no deberia de hacer ya que al compilar deberia de tomar la libreria y generar el .exe listo sin tener q tener q agregar dll para que funcione. :(
-
bq. de que forma tu linkeas el .a al programa?
Agregando
@LIBS += -L/ruta -lqxmpp@
al archivo .pro.
bq. el programa funciona.. pero da problemas de dll
¿Podrías copiar aquí los errores que te devuelve el compilador?
-
Disculpa el retraso amigo me encontraba fuera de casa.. por supuesto te dejo las imágenes con los errores y detallan dote todo..
Esta es el error al compilar usando QT Statico (Compilado)
!http://picpaste.com/1-ZijFvIMW.png
Esta el la ruta del qmake estatico (Compilado)
!http://picpaste.com/2-1NY30HfD.png
Esta son las Carpetas (la normal al instalar QT) y la (Estatica)
!http://picpaste.com/3-ftnyhxQ9.png
Creo.. que al parecer dentro de la carpeta de C:\Qt\Qt5.2.1_static\bin
Faltan muchos DLL.. Creo que es por eso que no logra compilarloya que la carpeta original de QT C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin
tiene todas sus DLL .Esta imagen es de QT statico (Compilado) y dentro no se observan DLL
!http://picpaste.com/4-wTyMNIG1.png
Esta otra imagen Pertenece a la carpeta original de QT sin compila
!http://picpaste.com/5-ZHlSlD2Q.png
Ahora.. la forma en que compile QT de forma esta tica fue la siguiente:
Edite el qmake.conf y agrege
@DEFINES += QT_STATIC_BUILD@
@QMAKE_LFLAGS = -static -static-libgcc@Agrege las iguientes rutas al path de windows:
@PATH=C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin;C:\Qt\Qt5.2.1\Tools\mingw48_32\bin;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\Python33;C:\strawberry\perl\bin;C:\Ruby200-x64\bin;@
Luego la forma en que realize el configure fue el siguiente:
@configure -static -release -confirm-license -opengl desktop -opensource -platform win32-g++ -prefix C:\Qt\Qt5.2.1_static -nomake examples -nomake tests@
luego enlace el qmake statico..
y sigo sin poder compilar QXMPP con el QT statico
Compile el QXMPP con QT sin usar static y creo el libqxmpp.a
ahora al linkear un app para realizar la prueba en (ESTATICO) resulta que me da error.. Te adjunto las 2 imagenes..
http://picpaste.com/err1-hXvg817e.png
http://picpaste.com/err2-WGieVkQJ.png
Alli detalle todos los errores que tengo..
Otra cosa a resaltar es que lo compile de forma normal sin pasarles parametros al QXMPP y creo el .a y .dll
lo probé en la versión no estática de QT y funciono de maravilla.. PEro el .exe creado es de 32K y depende de muchas DLL... cosa que no quiero.. deberia de tener un EXE completo..http://picpaste.com/111-HxAKdpst.png
Ahora probé de la misma forma pero con QT estático y me da un return :S
http://picpaste.com/22222-XmVCFzcu.png
en verdad e probado de todo.. y sigo sin resolver este enigma..
Salu2.
-
Vamos por partes.
[quote author="misa3l" date="1422564943"]
Esta es el error al compilar usando QT Statico (Compilado)!http://picpaste.com/1-ZijFvIMW.png
[/quote]Tenes que incluir:
@QT += network@
en tu archivo .pro.
[quote author="misa3l" date="1422564943"]
Creo.. que al parecer dentro de la carpeta de C:\Qt\Qt5.2.1_static\bin
Faltan muchos DLL.. Creo que es por eso que no logra compilarloya que la carpeta original de QT C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin
tiene todas sus DLL .
[/quote]No, aquí esta bien, pues eso es lo que quieres, una compilación sin dependencias con DLLs.
[quote author="misa3l" date="1422564943"]
Compile el QXMPP con QT sin usar static y creo el libqxmpp.aahora al linkear un app para realizar la prueba en (ESTATICO) resulta que me da error.. Te adjunto las 2 imagenes..
http://picpaste.com/err1-hXvg817e.png
http://picpaste.com/err2-WGieVkQJ.png
[/quote]¿el archivo libqxmpp.a esta dentro de la ruta que indica LIB?
Disculpa que no te pueda dar una ayuda mas específica, pero para ayudarte tendría que levantar la VM, compilar Qt estático + QXmpp, y todavía tendría que armar algún ejemplo para probar, es demasiado trabajo, y estoy un tanto ocupado en estos momentos :s
-
No hay problema amigo poco a poco se ayuda. Me urge terminar esto ya que mi tesis de universidad sera creando un proyecto con la tecnología xmpp para comunicación, pero sino logro compilar y hacer funcionar QXMPP con QT Statico tendré q inventarme algo XD.
en mi .pro tengo
@QT += core network xml
QT -= gui@ya que qxmpp usa network y xml .
ahora lo de la ruta del .a si amigo esta en esa ruta, al instalarlo se guarda dentro de la carpeta de lib del mingw48_32 y los header en includes.
en C:\Qt\Qt5.2.1\5.2.1\mingw48_32\lib
esta libqxmpp0.a y qxmpp0.dll
Ando casi loco con esto :/
salu2.
-
[quote author="misa3l" date="1422641054"]Me urge terminar esto ya que mi tesis de universidad sera creando un proyecto con la tecnología xmpp para comunicación, pero sino logro compilar y hacer funcionar QXMPP con QT Statico tendré q inventarme algo XD.
[/quote]No desesperes, es un proyecto interesante, me consta que hay otras personas trabajando en proyectos de fin de carrera parecidos. Yo por mi parte planeo usar QXmpp para uno de mis proyectos, así que algo sé del tema.
En última instancia puedes probar con compilación cruzada :p
[quote author="misa3l" date="1422641054"]
en C:\Qt\Qt5.2.1\5.2.1\mingw48_32\libesta libqxmpp0.a y qxmpp0.dll
[/quote]Pará, si te lo guarda como libqxmpp0.a entonces deberías probar linkeando como -lqxmpp0.