liblabjackusb.so:未定义的符号:DigitalIO
问题描述:
我得到了一个安装和库问题的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!?
这是一个错误?
有没有人遇到过这个?
答
我遇到了同样的问题,我在Labjack网站上发现了一个应该回答你的问题的帖子。
https://labjack.com/forums/u12/liblabjackusbso-undefined-symbol-digitalio
本质U12支持libjacklm.so开始实施前加入。 他们建议使用rawDIO解决方法。
太好了。我已经在他们的github项目上打开了一个错误问题。 – LAL