Ctypes和PyQt

时间:2011-03-24 11:24:49

标签: ctypes

我正在使用GUI的PyQt为我的AVR板。我想在我的应用程序中实现dfu-programmer引导程序,所以我可以在里面使用它。 我使用以下命令生成了libdfu.so(并复制到我的/ usr / lib中):

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-programmer来源,我真的不知道这是不是这样做的好办法。 我试图在这里使用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,因为bootloader使用它但它不起作用(同样的错误)......

任何解决方案? 感谢。

1 个答案:

答案 0 :(得分: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 

感谢。 :)(希望它可以再帮助一个人)