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