Recent

Author Topic: Problema con libreria dinamica  (Read 13573 times)

Leledumbo

  • Hero Member
  • *****
  • Posts: 8352
  • Programming + Glam Metal + Tae Kwon Do = Me
Re: Problema con libreria dinamica
« Reply #15 on: July 07, 2021, 02:24:11 pm »
This is how you debug a LoadLibrary that returns NilHandle:
Code: Pascal  [Select][+][-]
  1. uses
  2.   dynlibs;
  3. var
  4.   l: THandle;
  5. begin
  6.   l := LoadLibrary('./libpyafipws.so');
  7.   if l = NilHandle then
  8.     WriteLn(GetLoadErrorStr)
  9.   else
  10.     UnloadLibrary(l);
  11. end.
  12.  
which in your provided binary, displays:
Quote
./libpyafipws.so: undefined symbol: PyClass_Type
Googling around, it seems that PyClass_Type is only known by Python 2, not Python 3, which is logical because Python 3 is the default Python version on my Linux installation.
« Last Edit: July 07, 2021, 02:28:16 pm by Leledumbo »

hexxa

  • New Member
  • *
  • Posts: 23
Re: Problema con libreria dinamica
« Reply #16 on: July 14, 2021, 10:46:34 pm »
Gracias Fred por tu predisposicion.

Saludos

hexxa

  • New Member
  • *
  • Posts: 23
Re: Problema con libreria dinamica
« Reply #17 on: July 18, 2021, 02:20:46 am »
Gracias Leledumbo, yo tengo instalado Python 2.7.18. Estuve googleando y no encuentro una soluciòn, alguna idea?

Fred vS

  • Hero Member
  • *****
  • Posts: 2283
    • StrumPract is the musicians best friend
Re: Problema con libreria dinamica
« Reply #18 on: July 18, 2021, 03:19:24 am »
En mi sistema PyClass_Type está en libboost_python27 y que está aquí :

/usr/lib/x86_64-linux-gnu/libboost_python27.so.1.67.0

Code: Bash  [Select][+][-]
  1. fred@fiens ~> nm -D /usr/lib/x86_64-linux-gnu/libboost_python27.so.1.67.0 | grep PyClass_Type
  2.  
  3.                      U PyClass_Type  // result OK

Es posible que deba crear un enlace simbólico: libboost_python27.so con libboost_python27.so.1.67.0

[EDIT]

Puede ser instalando el paquete "deb" :

Code: Bash  [Select][+][-]
  1. sudo apt-get install libboost-python-dev
« Last Edit: July 19, 2021, 03:02:10 am by Fred vS »
I use Lazarus 2.0.6 32/64 and FPC 3.2.0 32/64 on Debian 10.2 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64 and Mac OS X Snow Leopard 32.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt, Carbon.

https://github.com/fredvs
https://gitlab.com/fredvs

Fred vS

  • Hero Member
  • *****
  • Posts: 2283
    • StrumPract is the musicians best friend
Re: Problema con libreria dinamica
« Reply #19 on: July 19, 2021, 02:56:17 am »
¡El último!

¡Lo tengo!

Con las fuentes https://github.com/reingart/pyafipws/tree/master/src

Compilé como este:

Code: Bash  [Select][+][-]
  1. gcc -c -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -I/usr/include/boost/python libpyafipws.c -o libpyafipws.o -fPIC -shared

Code: Bash  [Select][+][-]
  1. ld -lboost_python27 -lpython2.7 -o libpyafipws.so libpyafipws.o -shared -fPIC

Y funciona con loadlibrary().

Adjunto el zip de la librería para Linux 64 bit.

Fre;D
« Last Edit: July 19, 2021, 03:00:21 am by Fred vS »
I use Lazarus 2.0.6 32/64 and FPC 3.2.0 32/64 on Debian 10.2 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64 and Mac OS X Snow Leopard 32.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt, Carbon.

https://github.com/fredvs
https://gitlab.com/fredvs

hexxa

  • New Member
  • *
  • Posts: 23
Re: Problema con libreria dinamica
« Reply #20 on: July 21, 2021, 12:45:17 pm »
Hola Fred Vs, gracias por tu ayuda, logre compilar la libreria y que la cargue sin errores aunque no estoy seguro de haber hecho lo correcto.
Lo primero que hice fue instalar libboost-python-dev ya que no lo tenia, pero me instalo la version 3.8.
Para que compile sin errores hice lo sgte:
Code: Bash  [Select][+][-]
  1.  gcc -c -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -I/usr/include/boost/python libpyafipws.c -o libpyafipws.o -fPIC -shared
Code: Bash  [Select][+][-]
  1.  ld -lboost_python38 -lpython3.8 -lpython2.7 -o libpyafipws.so libpyafipws.o -shared -fPIC

Espero sea correcto, voy a empezar con las pruebas de uso de la librerìa.
Gracias nuevamente, me has dado una mano enorme!!
Saludos

Fred vS

  • Hero Member
  • *****
  • Posts: 2283
    • StrumPract is the musicians best friend
Re: Problema con libreria dinamica
« Reply #21 on: July 21, 2021, 02:30:29 pm »
Hola Fred Vs, gracias por tu ayuda, logre compilar la libreria y que la cargue sin errores aunque no estoy seguro de haber hecho lo correcto.
Lo primero que hice fue instalar libboost-python-dev ya que no lo tenia, pero me instalo la version 3.8.
Para que compile sin errores hice lo sgte:
Code: Bash  [Select][+][-]
  1.  gcc -c -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -I/usr/include/boost/python libpyafipws.c -o libpyafipws.o -fPIC -shared
Code: Bash  [Select][+][-]
  1.  ld -lboost_python38 -lpython3.8 -lpython2.7 -o libpyafipws.so libpyafipws.o -shared -fPIC

Espero sea correcto, voy a empezar con las pruebas de uso de la librerìa.
Gracias nuevamente, me has dado una mano enorme!!
Saludos

Hola!

¿Estás seguro de que no tienes libboost_python27?

Aqui:

Code: ASM  [Select][+][-]
  1. fred@fiens ~> locate libboost_python27
  2. /usr/lib/x86_64-linux-gnu/libboost_python27.a
  3. /usr/lib/x86_64-linux-gnu/libboost_python27.so
  4. /usr/lib/x86_64-linux-gnu/libboost_python27.so.1.67.0

Pero si funciona con libboost_python38, por qué no.

Atención, me parece que la liberia se usa STDCALL para Linux (normalmente usamos CDECL para Linux).
Entonces tendrás que usar para "external" stdcall.

Fre;D
« Last Edit: July 21, 2021, 02:37:32 pm by Fred vS »
I use Lazarus 2.0.6 32/64 and FPC 3.2.0 32/64 on Debian 10.2 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64 and Mac OS X Snow Leopard 32.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt, Carbon.

https://github.com/fredvs
https://gitlab.com/fredvs

 

TinyPortal © 2005-2018