本文介绍了链接步骤无法找到符号(XC8编译)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图编译和链接使用XC8编译的C程序。我从C18编译器改变,做了一些细微的变化兼容性的code。随着C18的code编译和链接就好了。随着XC8,编译去罚款,但链接步骤失败,此错误:

错误[500]; 0未定义的符号:
_putch(server.obj)_ENC_Init(server.obj)_ENC_WriteRegister(server.obj)_ENC_ReadRegister(server.obj)

由于编译成功,我想找到原型,ERGO在 .H 文件包含还好。我猜编译器无法找到 .C 文件。

功能 putch 是的的叫我自己的程序,但它被称为在的putchar 我使用该功能。首先是 ENC功能_ 是我自己的函数。

我添加了两个路径到XC8工具包的包含搜索路径:


  • C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\源,编译器在其中的 .C 文件的位置,我相信

  • C:\\ ... \\ lib中,那里有我自己的 .C 文件位于

不过,我仍然得到错误。

我怎样才能解决这个问题呢?

这是完整的日志:

咨询[1233]用人18F4620勘误变通办法:
咨询[1234] *损坏的快速中断影子寄存器
咨询[1234] *在RAM中的位置数据可以异步是否损坏。写的过程中发生复位
警告[1273]; 。无所不知code世代在自由模式下不可用
cgpic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -Og9s -q -E1 -w9 -PMS0:code: 0 @ code = 00H-地址0FFFFh -PMS0:code:0 @ CONST = 00H,地址0FFFFh -PMS0:code:0 @ SMALLCONST = 01000h-010FFhx240 -PMS0:code:0 @ MEDIUMCONST = 01000h-0FFFFh之间-PMS1:数据:8 @ COMRAM = 01H-07FH -PMS1:数据:0 @ ABS1 = 00H-0F7Fh -PMS1:数据:0 @两字= 01H-0F7Fh -PMS1:数据:0 @ RAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -PMS1:数据:400 @ BANK0 = 080H-0FFh的-PMS1:数据:800 @ BANK1 = 0100H-01FFh单元-PMS1:数据:1000 @ BANK2 = 0200H-02FFh -PMS1:数据:2000 @ BANK3 = 0300H-03FFh单元-PMS1:数据:0 @ BANK4 = 0400H-04FFh -PMS1:数据:0 @ BANK5 = 0500H-05FFh -PMS1:数据:0 @ = Bank6的0600h-06FFh -PMS1:数据: 0 @ BANK7 = 0700h-07FFH -PMS1:数据:0 @ BANK8 = 0800H-08FFh -PMS1:数据:0 @ BANK9 = 0900H-09FFh -PMS1:数据:0 @ BANK10 = 0A00h-0AFFh -PMS1:数据:0 @ BANK11 = 0B00h-0BFFh -PMS1:数据:0 @ BANK12 = 0C00H-0CFFh -PMS1:数据:0 @ BANK13 = 0D00H-0DFFH -PMS1:数据:0 @ BANK14 = 0E00h-0EFFh -PMS1:数据:0 @ BANK15 = 0F00H-0F7Fh -PMS1:数据:0 @ SFR = 0F80h-0FFFh过-PMS3:配置:0 @ CONFIG = 0300000h-030000Dh -PMS2:EEDATA:0 @ EEDATA = 0F00000h-0F003FFh -PMS4:idloc:0 @ iDLOC = 0200000h- 0200007h--cfgdata = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ cfgdata \\ 18f4620.cfgdata--cfg preFIX = __ CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1 ,65535,3967,8194,31,1,0,127,0 -fp -AC:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 --funcdat = C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5 --addrqual =忽略--runtime =初始化--runtime =明确server.p1C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-PLIB-HTC-18f4620.lppC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-STDLIB-HTC-D32-f32.lpp
cgpic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -q -E1 -Dserver.sdb -PMS0:code: 0 @ code = 00H-地址0FFFFh -PMS0:code:0 @ CONST = 00H,地址0FFFFh -PMS0:code:0 @ SMALLCONST = 01000h-010FFhx240 -PMS0:code:0 @ MEDIUMCONST = 01000h-0FFFFh之间-PMS1:数据:8 @ COMRAM = 01H-07FH -PMS1:数据:0 @ ABS1 = 00H-0F7Fh -PMS1:数据:0 @两字= 01H-0F7Fh -PMS1:数据:0 @ RAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -PMS1:数据:400 @ BANK0 = 080H-0FFh的-PMS1:数据:800 @ BANK1 = 0100H-01FFh单元-PMS1:数据:1000 @ BANK2 = 0200H-02FFh -PMS1:数据:2000 @ BANK3 = 0300H-03FFh单元-PMS1:数据:0 @ BANK4 = 0400H-04FFh -PMS1:数据:0 @ BANK5 = 0500H-05FFh -PMS1:数据:0 @ = Bank6的0600h-06FFh -PMS1:数据: 0 @ BANK7 = 0700h-07FFH -PMS1:数据:0 @ BANK8 = 0800H-08FFh -PMS1:数据:0 @ BANK9 = 0900H-09FFh -PMS1:数据:0 @ BANK10 = 0A00h-0AFFh -PMS1:数据:0 @ BANK11 = 0B00h-0BFFh -PMS1:数据:0 @ BANK12 = 0C00H-0CFFh -PMS1:数据:0 @ BANK13 = 0D00H-0DFFH -PMS1:数据:0 @ BANK14 = 0E00h-0EFFh -PMS1:数据:0 @ BANK15 = 0F00H-0F7Fh -PMS1:数据:0 @ SFR = 0F80h-0FFFh过-PMS3:配置:0 @ CONFIG = 0300000h-030000Dh -PMS2:EEDATA:0 @ EEDATA = 0F00000h-0F003FFh -PMS4:idloc:0 @ IDLOC = 0200000h- 0200007h--cfgdata = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ cfgdata \\ 18f4620.cfgdata--cfg preFIX = __ CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1 ,65535,3967,8194,31,1,0,127,0 -AC:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 --funcdat = C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5 --addrqual =忽略--runtime =初始化--runtime =明确server.p1C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-PLIB-HTC-18f4620.lppC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-STDLIB-HTC-D32-f32.lpp
aspic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -E1-CC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\中保18.ini-ver = V1.12 -lserver.lst --opt = -n -18F4620 --comdiv = 127 -no_pa -oserver.obj C:\\用户\\卡米尔\\ AppData的\\本地的\\ Temp \\ S234。
aspic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -E1-CC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\中保18.ini-ver = V1.12 --opt = -n -18F4620 --comdiv = 127 -no_pa -oc:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 OBJ C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.as
HLINK--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt-cs -h + server.sym -z -w9 -Q18F4620 -Mserver.map -E1 - 版本= XC8#PRO ## V1.12 -A code = 00H-地址0FFFFh -ACONST = 00H,地址0FFFFh -ASMALLCONST = 01000h-010FFhx240 -AMEDIUMCONST = 01000h-0FFFFh之间-ACOMRAM = 01H-07FH -AABS1 = 00H-0F7Fh -ABIGRAM = 01H-0F7Fh -ARAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -ABANK0 = 080H-0FFh的-ABANK1 = 0100H-01FFh单元-ABANK2 = 0200H-02FFh -ABANK3 = 0300H-03FFh单元-ABANK4 = 0400H-04FFh -ABANK5 = 0500H-05FFh -ABANK6 = 0600h-06FFh -ABANK7 = 0700h-07FFH -ABANK8 = 0800H-08FFh -ABANK9 = 0900H-09FFh -ABANK10 = 0A00h-0AFFh -ABANK11 = 0B00h-0BFFh -ABANK12 = 0C00H-0CFFh -ABANK13 = 0D00H-0DFFH -ABANK14 = 0E00h-0EFFh -ABANK15 = 0F00H-0F7Fh -ASFR = 0F80h-0FFFh过 - preset_vec = 00H,INT code中,int codeLO,通电时,init,end_init -pramtop = 01000h -psmallconst = SMALLCONST -pmediumconst = MEDIUMCONST -pconst =常数-AFARRAM = 00H-00H -ACONFIG = 0300000h-030000Dh -pconfig = CONFIG -AIDLOC = 0200000h-0200007h -pidloc = IDLOC -AEEDATA = 0F00000h-0F003FFh -peeprom_data = EEDATA - prdata = COMRAM,nvrram = COMRError [500]; 0未定义的符号:
_putch(server.obj)_ENC_Init(server.obj)_ENC_WriteRegister(server.obj)_ENC_ReadRegister(server.obj)
AM,nvbit = COMRAM,RBSS = COMRAM,RBIT = COMRAM -pfarbss = FARRAM,fardata = FARRAM -pintsave_regs =两字,bigbss =两字,bigdata =两字-pbss = RAM -pidata = code,irdata = code,ibigdata = code,ifardata = code C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.obj server.obj
德尔l.obj
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.1
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.2
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.3
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.4
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.as
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.obj
(908)退出状态= 1


解决方案

在,并咨询Microchp XC8 <一个href=\"http://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en557668&ei=ioWCUZzoBtHi4AO43IGwCQ&usg=AFQjCNGSAznQjjAh2oATAw9P7iO2y5FYow&sig2=Nb0iZdQQfSZcKWzw3C9pNw\"相对=nofollow>用户手册事实证明,至少有一个问题是,您的来源是缺乏 putch()功能。许多程序(如的printf(),例如)在Microchip的图书馆依靠 putch的presence()为他们的操作功能,而这个功能必须由您提供。而在常规电脑这样的功能,预计将打印字符标准输出,微控制器缺乏标准输出,因此 putch()在某种意义上就是靠它来界定你的标准输出是什么。在 putch()函数应该输出一个字符到一些输出,如LCD,串口,闪烁的LED? (莫尔斯code吧?),或。从手动,350页:

Writing the putch() function, even one that does nothing, will solve at least the issue of _putch being undefined: it appears that _putch (the name of the function in the error) is just a a name-mangled putch().

这篇关于链接步骤无法找到符号(XC8编译)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 08:19