原来的工程,在KEIL下编译运行正常,想转到IAR,换了个ch375hfu.r79库,就不对了: 加入ch375hfu.r79和ch375hfu.H和CH375HFT.c后,编译通过,Linking 时出现 Error[Li006]: duplicate definitions for "EXTI_InitStructure"; in "E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o", and "E:\SJC5T\SJC5TFOIAR228\Debug\Obj\crun.o" 等等同一类的问题, EXTI_InitStructure在MAIN.h中定义了,在CH375HFT.c中没有找到。 请问什么原因?是我的库加的不对,还是哪里要设置 ch375hfu.r79和ch375hfu.H用的是\ARM32\FILELIBU_CX5里的 盼回复,谢谢
编译的问题,我们知道的也就告诉你,这个编译器我也没用过 在网上查了下,可能是你复制的时候不注意出错或者你程序中哪边重新定义了,主要有两种可能,你自己查下: 1、在编译文件定义全局变量的时候,编译出现错误,经查是在另一个.c文件里面把我这个声明的变量又重新给赋值了一次,这个是不对的,如果你想定义全局变量的话,或者向调用其他.c文件里面的定义的全局变量的话,那么你在引用的.c文件里面加上extern char num;类似的语句就可以,不能重新给这个变量在定义的时候赋值 #iniclude “…”
unsigned char Buffer[1000]; //定义了一个1000字节的接收发送缓冲区 unsigned char host_mac_addr[6]= { 0x00, 0x1e, 0xc9, 0x45, 0x61, 0x9e }; unsigned char mac_addr[6] = {0x08,0x90,0x90,0x90,0x90,0x90 };//{ 0x52, 0x54, 0x4c, 0x38, 0xf7, 0x42 }; unsigned char ip_addr[4] = { 192, 168, 0, 21 };
unsigned char host_ip_addr[4] = { 192, 168, 0, 100 }; unsigned int packet_len; //接收、发送数据包的长度,以字节为单位
int main()
{
return 0;
}
/------------------------------------在get.c调用---------------------------------------------------------------------------------------------------------
#iniclude “…”
extern unsigned char Buffer[1000]; //定义了一个1000字节的接收发送缓冲区 extern unsigned char host_mac_addr[6]; extern unsigned char mac_addr[6] ; extern unsigned char ip_addr[4] ;
extern unsigned char host_ip_addr[4] ; extern unsigned int packet_len; //接收、发送数据包的长度,以字节为单位
void get()
{
} 2、程序中与重复定义了模块,需要把它找出来并Remove掉就可以了。
谢谢,那个毛病找到了。有个地方写错了。还有个错误: Error[Li005]: no definition for "CH375FileClose" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375DiskConnect" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375DiskReady" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375FileOpen" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375DiskStatus" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375vFileSize" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375FileReadX" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375IntStatus" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375GetVer" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375Init" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] Error[Li005]: no definition for "CH375LibConfig" [referenced from E:\SJC5T\SJC5TFOIAR228\Debug\Obj\CH375HFT.o] 这些函数在是CH375HFU.H里有引用,而且ch375hfu.r79库也加到项目里了。怎么不对?难道我加错了?
谢谢,把ch375hfu.r79库改成.A,貌似这个没有错误了。不好意思
IAR FOR ARM的库后缀不是.r79么?