繁体   English   中英

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

[英]Linker error in USB HID Code for Microchip PIC (MPLAB/C18)

我正在尝试为基本的USB HID功能编译一些代码。 我正在将PIC18F14K50与MPLAB 8.43和Microchip C18编译器一起使用。

我正在使用Microchip网站上的一些标准文件。 这是我的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“”枚举.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

版权所有(c)1998-2011 Microchip Technology Inc.

错误-在文件'./usb_function_hid.o'中找不到符号'HIDDescriptor1'的定义。

错误:1

链接步骤失败。

HIDDescriptor1符号出现在代码的2个位置:C文件的PasteBin行173和头文件的PasteBin行356。

该代码直接来自Microchip。 我不确定为什么它不会链接。 我认为它是为其他版本的编译器设计的,或者缺少某些外部依赖性,或者缺少一些编译器/链接器开关。

我需要做什么才能建立这个构想?

在头文件中,您在HIDDescriptor1定义了HIDDescriptor1 因此,当您编译usb_function_hid.c时,它会很好地编译,直到您尝试链接它为止。 然后,它找不到该符号。

似乎您必须在自己的代码中定义HIDDescriptor1 否则,它就在您下载的源代码中的其他位置,您也需要将其链接。 但是,肯定没有在.c文件中定义它。

编辑:

我下载并安装了Microchip应用程序库 在任何来源中都不再提及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。

Microchip应用程序库\\ USB \\设备-HID-键盘\\固件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM