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 Professional を使用しています。

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 に答える