Libusb referencia indefinida a

Estoy tratando de configurar la API libusb en mi sistema operativo. Descargué libusb api en libusb.org. Seguí el procedimiento de instalación estándar:

cd into directory ./configure make make check //without errors make install 

Luego lancé Eclipse C / C ++ y copié algo del código del tutorial que se encuentra en Internet. Pero al intentar construirlo obtuve el siguiente resultado:

 main.cpp:(.text+0x19): undefined reference to `libusb_init' main.cpp:(.text+0x76): undefined reference to `libusb_set_debug' main.cpp:(.text+0x8a): undefined reference to `libusb_get_device_list' main.cpp:(.text+0x136): undefined reference to `libusb_free_device_list' main.cpp:(.text+0x142): undefined reference to `libusb_exit' /tmp/ccOWJGwe.o: In function `printdev(libusb_device*)': main.cpp:(.text+0x162): undefined reference to `libusb_get_device_descriptor' main.cpp:(.text+0x28a): undefined reference to `libusb_get_config_descriptor' main.cpp:(.text+0x4d4): undefined reference to `libusb_free_config_descriptor' collect2: ld returned 1 exit status 

Tengo libusb.so en / lib y también usb.h en / usr / local / include y el enlace para .so y libusb.a en / usr / local / lib.

También el #incluir dentro del código es correcto.

Sé que ese problema está en el enlazador, pero yo no puedo hacer que funcione 🙂

Estoy usando el sistema operativo Fedora 15 y el comstackdor de la versión gcc 4.6.0 20110603 (Red Hat 4.6.0-10).

Entonces, ¿qué podría hacer para resolver estas referencias indefinidas? Muchas gracias por ayudar 🙂

tiene que configurar el indicador del enlazador de la biblioteca para la comstackción en el enlazador, puede obtener una lista completa en la consola ejecutando

 pkg-config --list-all 

Estas son las bibliotecas que ha instalado en su sistema y que debe vincular con las que desea utilizar. así que en tu ejemplo es libusb por lo que haces

 pkg-config --libs libusb 

debe haber la salida

 -lusb 

Esto le da la bandera que tiene que pasar al enlazador.

Luego, edita la configuración del proyecto y busca las banderas de enlaces, debería haber un campo de texto para eso en algún lugar de las opciones de construcción. No estoy seguro de dónde encontrarlo, pero buscarlo en Google lo sugiere:

 Project -> Properties -> C/C++ Build -> Miscellaneous -> flags 

Después de encontrarlo, simplemente agregue la bandera del enlazador en el campo de texto y estará bien.

Me enfrenté al mismo problema. Pero pude resolverlo agregando ‘-lusb-1.0’ al vinculador.

por ejemplo: g ++ myfile.cpp -lusb-1.0

¿Cuál es tu línea de comando del enlazador? Necesitas tener -lusb en el comando de enlace; solo tener el encabezado incluido no funcionará.

No uso Eclipse C / C ++ pero estoy bastante seguro de que la razón es la misma que enfrenté hace algún tiempo al configurar un proyecto de C en Netbeans.

No es suficiente tener el #include en su código y la biblioteca en la ubicación correcta, también tiene que decirle a Eclipse dónde buscarlos y cómo usarlos. Este turorial te muestra cómo configurarlo en Eclipse.