2

基本的な USB HID 機能のコードをコンパイルしようとしています。MPLAB 8.43 と Microchip C18 コンパイラを搭載した PIC18F14K50 を使用しています。

Microchip の Web サイトからいくつかの標準ファイルを使用しています。ここに私の C ファイルがあり、ここにヘッダー ファイルがあります

ビルド時に次のエラーが発生します。

実行中: "C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe" /p18F14K50 /l"C:\MCC18\lib" /k"C:\MCC18\bin\LKR" "usb_function_hid. o" "usb_device.o" "enumeration.o" "usb_descriptors.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.cof" /M" C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.map" /W

MPLINK 4.40、リンカー

デバイス データベース バージョン 1.3

Copyright (c) 1998-2011 Microchip Technology Inc.

エラー - ファイル「./usb_function_hid.o」にシンボル「HIDDescriptor1」の定義が見つかりませんでした。

エラー: 1

リンク ステップに失敗しました。

このHIDDescriptor1記号は、コード内の 2 つの場所 (C ファイルの PasteBin 行 173 とヘッダー ファイルの PasteBin 行 356) に表示されます。

このコードは、Microchip から直接提供されています。リンクしない理由がわかりません。コンパイラの別のバージョン用に設計されているか、外部依存関係が欠落しているか、コンパイラ/リンカー スイッチが欠落していると思います。

これを構築するために何をする必要があるかについてのアイデアはありますか?

4

1 に答える 1

1

ヘッダー ファイルでは、HIDDescriptor1外部で定義しています。したがって、usb_function_hid.c をコンパイルすると、リンクを試行するまで正常にコンパイルされます。次に、そのシンボルを見つけることができません。

HIDDescriptor1独自のコードで定義する必要があるようです。または、ダウンロードしたソースの別の場所にあり、それもリンクする必要があります。しかし、それは確かに .c ファイルで定義されていません。

編集:

Microchip Application Librariesをダウンロードしてインストールしました。どのソースにも HIDDescriptor1 の言及はありません。ただし、usb_function_hid.h代替と思われる別の構造について詳しく説明します。

//USB HID Descriptor header as detailed in section 
//"6.2.1 HID Descriptor" of the HID class definition specification
typedef struct _USB_HID_DSC
{
    BYTE bLength;           //offset 0 
    BYTE bDescriptorType;           //offset 1
    WORD bcdHID;            //offset 2
    BYTE bCountryCode;      //offset 4
    BYTE bNumDsc;           //offset 5


    //USB_HID_DSC_HEADER hid_dsc_header[HID_NUM_OF_DSC];
    /* HID_NUM_OF_DSC is defined in usbcfg.h */

} USB_HID_DSC;

サンプル プロジェクトを参照すると、多くの HID プロジェクトがあり、すべて C18 コンパイラで問題なくビルドされます。このライブラリを再度ダウンロードすることをお勧めします。ライブラリが不完全または古い可能性があります。以下で強調表示されているプロジェクトは、PIC18F14K50 用です。

マイクロチップ アプリケーション ライブラリ\USB\デバイス - HID - キーボード\ファームウェア

于 2012-05-18T16:24:59.500 に答える