2011-03-24 32 views
0

我使用GUI的PyQt爲我的AVR board.I想在我的應用程序中實現dfu-programmer引導程序,以便我可以在裏面使用它。 我產生libdfu.so(並複製到我的/ usr/lib目錄),用下面的命令:Ctypes和PyQt

gcc -shared -Wl,-soname,libdfu -o libdfu.so -fPIC arguments.o main.o commands.o dfu.o atmel.o util.o intel_hex.o 

所有的目標文件是從DFU程序員的來源,我真的不知道,如果這是這樣做的好方法。 我試着加載與testlib.py這裏的圖書館:

import ctypes 

testlib = ctypes.CDLL('libdfu.so') 
testlib.usage() 

而且它給我這個錯誤:

$ python teslib.py 
Traceback (most recent call last): 
    File "teslib.py", line 3, in <module> 
    testlib = ctypes.CDLL('libdfu.so') 
    File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: /usr/lib/libdfu.so: undefined symbol: usb_init 

我也試圖導入庫前libusb-1.0.so因爲引導程序使用它,但它不工作(相同的錯誤)...

任何解決方案? 謝謝。

回答

0

我發現這個問題,它是libusb.so的依賴項。 要發出這個我已經設置了LDFLAGS和CPPFLAGS(到各自的/ usr/lib目錄和/ usr/include目錄)和-libusb選項添加到我以前的命令:

gcc -shared -Wl,-soname,dfulib.so.1 -o dfulib.so.1.0.1 arguments.o commands.o atmel.o dfu.o intel_hex.o main.o util.o -lusb -ldl 

感謝。 :)(希望它可以幫助別人)

+0

歡迎來到堆棧溢出!很高興看到你解決了你的問題。不要忘了點擊左邊的複選標記來標記答案。 – 2011-03-25 01:26:01