微芯片PIC(MPLAB/C18)的USB HID代码中的链接器错误

微芯片PIC(MPLAB/C18)的USB HID代码中的链接器错误,usb,hid,microchip,mplab,c18,Usb,Hid,Microchip,Mplab,C18,我正在尝试编译一些基本USB HID功能的代码。我正在使用带有MPLAB 8.43和微芯片C18编译器的PIC18F14K50 我正在使用Microchip网站上的一些标准文件。和 生成时出现以下错误: 执行:“C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe”/p18F14K50/l“C:\MCC18\lib”/k“C:\MCC18\bin\LKR”“usb\u函数\u hid.o”“usb\u设备.o”“枚举.o”“usb\u描

我正在尝试编译一些基本USB HID功能的代码。我正在使用带有MPLAB 8.43和微芯片C18编译器的PIC18F14K50

我正在使用Microchip网站上的一些标准文件。和

生成时出现以下错误:

执行:“C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe”/p18F14K50/l“C:\MCC18\lib”/k“C:\MCC18\bin\LKR”“usb\u函数\u hid.o”“usb\u设备.o”“枚举.o”“usb\u描述符.o”/u-CRUNTIME/u-DEBUG/z\u-MPLAB\u-BUILD=1/z\u-MPLAB\u-DEBUG=1/o”C:\LPCUSBDK\u-Labs\Lab\Labs\output\Project.cof“C:\LPCUSBDK\u Labs\Lab1\u files\output\Project Lab 1.map”/W

MPLINK 4.40,链接器

设备数据库版本1.3

版权所有(c)1998-2011微芯片技术公司

错误-在文件“./usb\u函数\u hid.o”中找不到符号“HIDDescriptor1”的定义

错误:1

链接步骤失败

HIDDescriptor1
符号出现在代码中的两个位置:C文件的粘贴行173和头文件的粘贴行356

这段代码直接来自Microchip。我不确定为什么它不会链接。我认为要么它是为另一个版本的编译器设计的,要么我缺少一些外部依赖,要么我缺少一些编译器/链接器开关


你知道我需要做什么来构建它吗?

在头文件中,你有外部定义的
HIDDescriptor1
。因此,当你编译usb\u function\u hid.c时,它会编译得很好,直到你尝试链接它。然后,它就找不到那个符号了

似乎您必须在自己的代码中定义
HIDDescriptor1
。否则,您下载的源代码中的某个地方也需要链接它。但它肯定没有在.c文件中定义

编辑:

我下载并安装了。在任何源代码中都不再提到HIDDescriptor1。但是,
usb\u function\u 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的


这一点是显而易见的。但正如我所说,代码直接来自微芯片,他们的指令中没有提供任何与必须定义
HIDDescriptor
相关的内容。此外,如果我需要自己定义它,那么它就不会被标记为
extern
。很抱歉指出了明显的问题;这一点谁也不知道人们体验所在的网站。我的想法是,你的设备应该提供自己的
HIDDescriptor
,填写所有字段以使其正确,并将其命名为
HIDDescriptor1
。让我看一下代码;是C18附带的源代码还是你使用的单独下载?这是一个单独的下载从Microchip加载,作为他们如何实现USB HID示例的一部分。我将看看是否可以找到链接。我下载了Microchip应用程序库并编辑了上面的答案…希望这有帮助使用此库,我能够使HID工作。谢谢!(我不确定其他Microchip库有什么问题。可能它过时了?)