2013-06-25 6 views
0

이 문제에 관해 많은 질문이 있지만 특히 우분투의 libusb 라이브러리 구현에 문제가 있음을 알고 있습니다.libusb 역 참조 불완전 유형의 포인터

struct usb_bus *busses; 
struct usb_bus *bus; 
struct usb_device *digiSpark = NULL; 
struct usb_device *device; 


if(debug) printf("Detecting USB devices...\n"); 
// Initialize the USB library 
usb_init(); 

// Enumerate the USB device tree 
usb_find_busses(); 
usb_find_devices(); 

// Iterate through attached busses and devices 
busses = usb_get_busses(); 
for (bus = busses; bus; bus = bus->next) 
{ 
    for (device = bus->devices; device; device = device->next) 
    { 
     // Check to see if each USB device matches the DigiSpark Vendor and Product IDs 
     if((device->descriptor.idVendor == 0x16c0) && (device->descriptor.idProduct == 0x05df)) 
     { 
      if(debug) printf("Detected DigiSpark... \n"); 
      digiSpark = device; 
     } 
    } 
} 

그것은 거의 축 어적 libusb를 예에서 찍은 : 다음은 내 코드입니다

http://libusb.sourceforge.net/doc/examples-code.html

그러나 오류 "불완전한 유형에 포인터를 역 참조"의 톤을 생성합니다.

특히, 나는 다음과 같은 라인에 불완전한 유형의 오류가이 역 참조 포인터를 받고 있어요 : 다음 줄에

busses = usb_get_busses(); 

for (bus = busses; bus; bus->next) 

for (device = bus->devices; device; device->next) 

그리고 두 번을 :

if((device->descriptor.idVendor == 0x16c0) && (device->descriptor.idProduct == 0x05df)) 

내가 말했듯이,이 이상해 왜냐하면 저는 (대부분)이 작업을하지 않기 때문에, 이것은 lib 웹 사이트의 설정 예제에서 취한 것입니다.

어떤 제안이 좋을 것입니다. 감사!

+0

'device-> next'라는 표현은 실제로 아무 것도하지 않습니다. 나는 당신이'device = device-> next'를 의미한다고 생각하니? –

+0

예, 죄송합니다. miscopy. 모든 오류가 계속 적용됩니다. – eatonphil

+0

그리고 구조체가 정의 된 헤더 파일을 포함합니까? –

답변

0

나는 밖으로 나가 틀린 도서관을 포함하고 있었다 ... 나가 진짜로 왜 확실하지 않더라도. 포함하는 것 대신에 다음과 같이 컴파일 타임에 라이브러리를 포함하고 참조했습니다.

>> gcc main.c -lusb 
>> gcc main.o -o main -lusb 

이것은 나를 위해 해준 것입니다! 행운을 빕니다!