Libusb未定义的参考

我正在尝试在我的操作系统上设置libusb API。 我在libusb.org上下载了libusb api。 我遵循标准的安装程序:

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

然后,我启动了Eclipse C / C ++,并从互联网上的教程中复制了一些代码。 但是当试图build立它时,我得到了以下输出:

 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 

我在/ lib中有libusb.so,而且在/ usr / local / include中有usb.h,在/ usr / local / lib中有.so和libusb.a的链接

代码中的#include也是正确的。

我知道问题是在链接器,但我,种,不能让它工作:)

我使用的是Fedora 15操作系统和gcc 4.6.0 20110603(Red Hat 4.6.0-10)版本的编译器。

那么我能做些什么来解决这些未定义的引用? 非常感谢您的帮助:)

Solutions Collecting From Web of "Libusb未定义的参考"

您必须在链接器中设置库链接器标志进行编译,通过执行,您可以在控制台中获得完整列表

pkg-config --list-all

这些是您在系统上安装的库,您必须链接到您要使用的库。 所以在你的例子中它是libusb所以你这样做

pkg-config --libs libusb

应该有输出

-lusb

这给你你必须传递给链接器的标志。

然后你编辑项目的配置并搜索linkerflags,在buildoptions的某个地方应该有一个textfield。 我不太确定在哪里可以找到它,但Google提示:

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

找到之后,只需在文本框中添加链接器标志,就可以了。

我也遇到了同样的问题。 但是我可以通过在链接器中添加'-lusb-1.0'来解决这个问题。

例如:g ++ myfile.cpp -lusb-1.0

什么是你的链接器命令行? 您需要在链接命令中使用-lusb ; 只是包括标题将无法正常工作。

我不使用Eclipse C / C ++,但是我确定原因与前几年在Netbeans中设置C项目时相同。

将代码中的#include和库放在正确的位置是不够的 – 还必须告诉Eclipse在哪里寻找它们以及如何使用它们。 这个教程将告诉你如何在Eclipse中进行设置。