J'ai eu un problème d'installation et d'une bibliothèque pour le produit LabJack https://labjack.com/products/u12liblabjackusb.so: non défini symbole: DigitalIO
J'ai suivi ces étapes d'installation pour une installation sur ubuntu 16.04. https://labjack.com/support/software/installers/exodriver/mac-and-linux/in-depth-build-instructions
Le code suivant me amène à un symbole non défini pour DigitalIO dans le liblabjackusb.so
$ python
>>> import u12
>>> d =u12.U12()
>>> d.digitalIO(idNum=-1, demo=0, trisD=3, trisIO=0, stateD=0, stateIO=0, updateDigital=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.linux-x86_64/egg/u12.py", line 2506, in digitalIO
def getFirmwareVersion(self, idNum=None):
File "/usr/lib/python2.7/ctypes/__init__.py", line 375, in __getattr__
func = self.__getitem__(name)
File "/usr/lib/python2.7/ctypes/__init__.py", line 380, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/local/lib/liblabjackusb.so: undefined symbol: DigitalIO
Je regardais autour de la mise en œuvre DigitalIO et je l'ai trouvé dans ljacklm.h et ljacklm.c.
$cd ljacklm/libljacklm
$ nm ljacklm.o | grep DigitalIO
0000000000007489 T DigitalIO
$ nm libljacklm.so.1.20.2 | grep DigitalIO
00000000000091a9 T DigitalIO
Cela montre que la bibliothèque a été générée correctement. Comment est-ce que u12.py charge le liblabjackusb.so car il n'a pas la déclaration et l'implémentation de la fonction DigitalIO? (voir u12.py ligne 348). Est-ce que la fonction _loadLinuxSo() devrait charger libljacklm.so au lieu de liblabjackusb.so!?
C'est un bug?
Quelqu'un at-il rencontré cela?
Très bien. J'ai ouvert un bug sur leur projet github. – LAL