2017-09-13 33 views
1

我得到了一个安装和库问题的LabJack的产品https://labjack.com/products/u12liblabjackusb.so:未定义的符号:DigitalIO

我遵循在Ubuntu 16.04安装这些安装步骤。 https://labjack.com/support/software/installers/exodriver/mac-and-linux/in-depth-build-instructions

下面的代码使我对DigitalIO未定义符号在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 

我四处寻找DigitalIO实施,我发现它在ljacklm.h和ljacklm.c。

$cd ljacklm/libljacklm 
$ nm ljacklm.o | grep DigitalIO 
0000000000007489 T DigitalIO 
$ nm libljacklm.so.1.20.2 | grep DigitalIO 
00000000000091a9 T DigitalIO 

这表明lib是正确生成的。

为什么u12.py加载liblabjackusb.so,因为它没有DigitalIO函数声明和实现? (参见u12.py第348行)。函数_loadLinuxSo()应该加载libljacklm.so而不是liblabjackusb.so!?

这是一个错误?

有没有人遇到过这个?

回答