3

我正在尝试使用库HID API进行一些 USB 编程。以下是我的代码

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <hidapi.h>


int main(int argc, char* argv[])
{
    int res;
    unsigned char buf[65];
#define MAX_STR 255
    wchar_t wstr[MAX_STR];
    hid_device *handle;
    int i;

    // Enumerate and print the HID devices on the system
    struct hid_device_info *devs, *cur_dev;

    devs = hid_enumerate(0x0, 0x0);
    cur_dev = devs; 
    while (cur_dev) {
        printf("Device Found\n  type: %04hx %04hx\n  path: %s\n  serial_number: %ls",
            cur_dev->vendor_id, cur_dev->product_id, cur_dev->path, cur_dev->serial_number);
        printf("\n");
        printf("  Manufacturer: %ls\n", cur_dev->manufacturer_string);
        printf("  Product:      %ls\n", cur_dev->product_string);
        printf("\n");
        cur_dev = cur_dev->next;
    }
    hid_free_enumeration(devs);

}

我已将以下内容添加到Project properties->Configuration Properties->VC++ Directories->Include Directories

C:\Users\yohan\Documents\HIDApi\windows
C:\Users\yohan\Documents\HIDApi\hidapi
C:\Users\yohan\Documents\HIDApi\libusb

当我运行我的代码时,我收到以下错误

Error   6   error LNK2019: unresolved external symbol _hid_free_enumeration referenced in function _main    c:\Users\yohan\documents\visual studio 2010\Projects\USB_Test\USB_Test\FirstTest.obj    USB_Test
Error   7   error LNK2019: unresolved external symbol _hid_enumerate referenced in function _main   c:\Users\yohan\documents\visual studio 2010\Projects\USB_Test\USB_Test\FirstTest.obj    USB_Test
Error   8   error LNK1120: 2 unresolved externals   c:\users\yohan\documents\visual studio 2010\Projects\USB_Test\Debug\USB_Test.exe    USB_Test

为什么我收到此错误?我正在使用 Visual Studio 2010 专业版。

4

2 回答 2

3

您已经包含了标头,因此编译器知道所有符号声明(函数等)。但是,链接器需要将您对这些符号的使用链接到它们的实际定义——它找不到它们(因此出现错误)。

这可能是由多种原因引起的,但是在您的情况下,您似乎还没有构建库,或者如果您构建了库(或者您有预构建的版本),那么您还没有链接它(那是库路径目录的用途 - 您需要将 .lib 文件作为输入添加到链接器,添加它将搜索该 .lib 的库路径)。

链接 .lib 文件的另一种方法是通过特定于编译器的(在这种情况下仅限 MSVC)#pragma指令:

#pragma comment(lib, "thelibrary.lib")
于 2013-05-10T16:56:52.463 回答
0

我必须将他们完整的可视化 C++ 项目包含到我的项目中。然后问题就没有了

于 2013-05-10T17:47:45.280 回答