Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ LIBUSB编译错误_C++_C_Ubuntu_Installation_Libusb_Pkg Config_Gcc - Fatal编程技术网

C++ LIBUSB编译错误

C++ LIBUSB编译错误,c++,c,ubuntu,installation,libusb,pkg-config,gcc,C++,C,Ubuntu,Installation,Libusb,Pkg Config,Gcc,我正在Ubuntu上运行c/c++并试图编译以下代码 #include <cassert> #include <cstdio> #include <libusb-1.0/libusb.h> int main() { libusb_context *context = NULL; libusb_device **list = NULL; int rc = 0; ssize_t count = 0; rc = libus

我正在Ubuntu上运行c/c++并试图编译以下代码

#include <cassert>
#include <cstdio>
#include <libusb-1.0/libusb.h>

int main() {
    libusb_context *context = NULL;
    libusb_device **list = NULL;
    int rc = 0;
    ssize_t count = 0;

    rc = libusb_init(&context);
    assert(rc == 0);

    count = libusb_get_device_list(context, &list);
    assert(count > 0);

    for (size_t idx = 0; idx < count; ++idx) {
        libusb_device *device = list[idx];
        libusb_device_descriptor desc = {0};

        rc = libusb_get_device_descriptor(device, &desc);
        assert(rc == 0);

        printf("Vendor:Device = %04x:%04x\n", desc.idVendor, desc.idProduct);
    }
}
我是Ubuntu、c/c++和libusb的新手,希望能提供帮助

谢谢这是一个链接器错误

您需要告诉链接器包含
libusb
,其中包含这些引用函数(例如
-lusb
)以及它的位置(例如
-L/usr/local/lib
)。实际值将取决于您的安装

作为突出显示,您可以使用该工具确定链接器标志。在我的系统上,这看起来像:

% pkg-config --libs libusb-1.0                                    
-L/usr/local/Cellar/libusb/1.0.9/lib -lusb-1.0
您可以将此信息直接提供给:

假设一切按照计划进行,您现在应该在当前工作目录中有一个可执行文件
libusbtest
。您可以这样运行它:

% ./libusbtest                                                    
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:850a
Vendor:Device = 05ac:023f
Vendor:Device = 05ac:8403

使用
pkg config
获取库所需的编译器标志:

g++ libusbtest.cpp `pkg-config --libs libusb` -o libusbtest

注:这是说,没有所谓的“c/c++”语言。完全同意约翰西韦布的观点。您也没有告诉我们如何编译代码。“c/c++”指的是c和c++如何链接任何代码示例,因为正如我提到的,我是一个新手用户,所以如果您能告诉我什么命令,或者您知道任何可以帮助我理解这些链接器错误的网站。。。thanks@UsmanSharifAmjadKhan:这将取决于您使用的链接器。正如我所说,我是新手,因此我已安装了libusb-1.0-dev和libusb-dev。。。我不确定链接器是什么?链接器错误?你的意思是这些与操作系统或C或C++或LIUSB…我如何知道我使用的是哪种链接器?@UsmanSharifAmjadKhan:可能有助于解释链接器是什么和做什么。大多数人都使用编译器附带的链接器。请注意,对于libusb-1.0,您会使用pkg config--libs libusb-1.0thanks@Avidanborisov我尝试了上面的命令(g++libusbtest.cpp'pkg config--libs libusb-1.0'-o libusbtest),但编译器错误(或错误不知道)表示“g++libusbtest.cpp'pkg config--libs libusbtest-1.0'-o libusbtest”…请您再帮我一次好吗…谢谢您的时间…:)您需要在
pkg config
命令周围使用反勾,而不是单引号。或者:
g++libusbtest.cpp$(pkg config--libs libusb)-o libusbtest
。非常感谢,我运行了上面的命令,它运行时没有显示任何内容,但问题是它没有打印任何内容…正如您所看到的,我正在打印供应商id和设备id,但没有打印任何内容…如果我打扰了您,我很抱歉…我如何知道我是否从这段代码中得到了我想要的内容?…:)thanks@UsmanSharifAmjadKhan:由运行构建的可执行文件。
% ./libusbtest                                                    
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:850a
Vendor:Device = 05ac:023f
Vendor:Device = 05ac:8403
g++ libusbtest.cpp `pkg-config --libs libusb` -o libusbtest