2011-03-24 33 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