[Kde-devel-es] Qtimer y librerias

Miguel de Benito lists at 8027.org
Mon May 30 20:16:47 CEST 2005


On Sunday 29 May 2005 13:42, hacklet wrote:
> Hola de nuevo,

Buenas,

  me temo que esto puede que no te sea de mucha ayuda, pero es lo que se me 
ocurre...

> aqui os pongo como compila con el g++:
>
> g++  -o ../bin/qt_program main.o pci7248.o pci7248form.o moc_pci7248.o
> moc_pci7248form.o   -L/home/let/proyecto/src/lib -L/usr/share/qt3/lib
> -L/usr/X11R6/lib -lraptor -lqt-mt -lXext -lX11 -lm -lpthread

  puedes probar el mismo comando g++, pero en vez de -lraptor, poner la 
librería como un objeto más:

  g++  -o ../bin/qt_program main.o pci7248.o pci7248form.o moc_pci7248.o
  moc_pci7248form.o  lib/libraptor.a -L/usr/share/qt3/lib 
  -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread

  si esto funciona es que efectivamente la librería contiene lo que 
necesitas. Esto debería ser así, porque lo que pones en tu cabecera:

  typedef short           I16;
  typedef unsigned short  U16;
  I16  Register_Card (U16 CardType, U16 card_num);

y el prototipo de la función devuelto en el error:

  undefined reference to `Register_Card(unsigned short, unsigned short)

concuerdan. De modo que el problema es cómo se enlaza... 

  En teoría, cuando se invoca a ld, para que enlace forzosamente una 
librería estática se puede usar -Bstatic (o -aarchive) seguido de -lnombre 
(-lraptor). Luego se puede volver a -Bdynamic (o -ashared) para el resto 
(esto permite ser selectivo, al contrario que si le pasas -static a g++):

  ld -o ../bin/qt_program main.o pci7248.o pci7248form.o moc_pci7248.o
  moc_pci7248form.o  -L/home/let/proyecto/src/lib -L/usr/share/qt3/lib 
  -L/usr/X11R6/lib -Bstatic -lraptor -Bdynamic -lqt-mt -lXext -lX11 -lm
  -lpthread

  Claro, que como se está invocando a ld indirectamente mediante g++, 
tendrás que pasarle los parámetros precediéndolos de

  -Wl,[parámetros]

  De todos modos, todo este follón no tiene mucho sentido si sólamente 
existe un fichero libraptor.a y no además un .so, pues el enlazador debería 
encontrarlo y determinar automáticamente que debe enlazarlo 
estáticamente... Mmmm, no sé...

  Intenta urgar entre las opciones de proyecto de QT, y si no siempre puedes 
intentar compilar tu librería como dinámica y volverlo a intentar. Ya nos 
contarás.

  Saludos,
-- 
_________________
Miguel de Benito

http://8027.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-devel-es/attachments/20050530/89d28ebe/attachment.pgp


More information about the Kde-devel-es mailing list