2017-09-13 13 views
1

私はUbuntuの16.04にインストールするため、これらのインストール手順に従っLabJack製品のhttps://labjack.com/products/u12liblabjackusb.so:未定義のシンボル:DigitalIO

をインストールし、ライブラリの問題を得ました。 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が正しく生成されたことを示しています。

DigitalIO関数の宣言と実装がないため、u12.pyはliblabjackusb.soをどのようにロードしますか? (u12.py行348を参照)。関数_loadLinuxSo()は、liblabjackusb.soの代わりにlibljacklm.soをロードする必要がありますか?

これはバグですか?

誰かがこれに遭遇しましたか?

答えて

2

同じ問題が発生し、あなたの質問に答えるべきLabjackウェブサイトの投稿が見つかりました。

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

libjacklm.soが実装される前に基本的にはU12のサポートが追加されました。 彼らは、rawDIOを使用した回避策を提案しています。

+0

彼らのgithubプロジェクトでバグの問題をオープンしました。 – LAL