2017-09-13 3 views
1

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?

Répondre

2

J'ai rencontré le même problème et j'ai trouvé un article sur le site Web de Labjack qui devrait répondre à votre question.

https://labjack.com/forums/u12/liblabjackusbso-undefined-symbol-digitalio

Essentiellement soutien U12 a été ajouté avant libjacklm.so a été mis en œuvre. Ils suggèrent une solution de contournement utilisant rawDIO.

+0

Très bien. J'ai ouvert un bug sur leur projet github. – LAL