当前位置: 首页 > 面试题库 >

Libusb未定义的引用

申博厚
2023-03-14
问题内容

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

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

然后,我启动了Eclipse C / C ++,并从Internet上的教程中复制了一些代码。但是当尝试构建它时,我得到以下输出:

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)版本编译器。

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


问题答案:

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

pkg-config --list-all

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

pkg-config --libs libusb

应该有输出

-lusb

要么

-lusb-1.0

这为您提供了必须传递给链接器的标志。例如

g++ myfile.cpp -lusb[-1.0]

然后,您编辑项目的配置并搜索链接器标志,在buildoptions中的某个位置应有一个文本字段。我不太确定在哪里可以找到它,但是建议使用它:

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

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

编辑

由于我的答案是已接受的答案,因此我还添加了似乎对很多人有用的另一个标记。



 类似资料:
  • 我试图以编程方式创建一个饼图,希望把它变成一个React组件来重用。基本上,我需要一个饼图,是可点击的,每个切片扩展成一个整体饼当点击。我试图按照这个教程来制作饼图,在底部,我有一个JS的一部分,我试图测试出来。我最终得到了以下是错误消息的截图。 我的理解是,这不是jQuery,只是一个普通的JS。我不确定这是不是真的。我通过CDN导入jQuery,但仍然得到相同的错误。我读了这篇文章,我认为只是

  • 我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一

  • 错误:未定义对'pthread_cancel'的引用

  • 问题内容: 我正在尝试重新学习一些用于编写简单登录脚本的PHP基础知识,但是遇到了以前从未收到的错误(一年多以前我制作了相同的脚本,但从未遇到此错误。我尽可能简化了代码我可以测试一下哪个区域出了问题,这就是问题所在: 现在,当我将变量发送到脚本时,此代码可以正常工作,但是如果未提供任何变量,它将发出错误。从理论上讲,这会很好,因为如果没有提供用户名/密码,则可能会出现错误。在将代码发送到脚本之前,

  • libusb是一个 USB 设备访问接口库,可为应用程序提供访问权限,以控制在Unix和非Unix系统上与USB设备之间的数据传输,而无需内核模式驱动程序。

  • 问题内容: 这听起来真的很愚蠢,但我无法弄清楚为什么会收到此错误。 我创建了一个选择框,以我的html形式命名为“ query_age”: 在相应的php形式中,我有: 运行页面时,出现此错误: 注意:未定义的索引:第19行的index.php中的query_age 我不明白为什么会这样,我很想知道如何解决它。 问题答案: 我没有看到php文件,但是可能就是这样- 在您的php文件中替换: 与: