TI中文支持网
TI专业的中文技术问题搜集分享网站

redefined重复定义问题

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

Eric Ma:

jie,

这里显示ePWM的重复定义,应该是EQep中引用的f2803xqep.h会引用到f2803xpwm.h,导致重复定义。

你的头文件是自己定义的还是TI例程?

建议你下载controlSUITE软件,用CCS5导入例程,在例程基础上修改。

Eric

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

jie liang1:

回复 Eric Ma:

我这个工程就是在例程的基础上修改的(参考打的例程是C:\TI\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.0\HVPM_Sensorless),这两个头文件也都是TI的例程(头文件路径在C:\TI\controlSUITE\libs\app_libs\motor_control\drivers\f2803x_v2.0),只不过例程里是用了一个C文件调用这两个头文件 ,而我用两个C文件分别调用这两个头文件 编译就有错误 为什么?

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

Eric Ma:

回复 jie liang1:

jie,

工程中的Epwm.c是从哪里加载的?这个源文件本身有没有添加其他的头文件,有可能是某些头文件定义跟f2803xpwm.h冲突了

Eric

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

jie liang1:

回复 Eric Ma:

       这个是我自己写的,跟例程里的程序没多大区别,只不过将C:\TI\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.0\HVPM_Sensorless里HVPM_Sensorless.C关于PWM的部分拷出来新建一个源文件Epwm.c,关于QEP的部分新建源文件EQEP.c,当然还包括其他头文件,但是跟例程里面添加的头文件是一样的。

他例程里面是把两个头文件放在一个源文件使用这样不会报错,我只是将这两个头文件分别放在不通的C文件这样就报错了?

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

Charles Ji:

回复 jie liang1:

我也遇上了同样的问题,显示_eCAP,_ePWM,_eQEP redefined,很奇怪,这都库里定义的,别的地方没有定义,怎么会重复呢

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

Di Orign:

我刚好遇到这个问题,研究了一下解决问题了。

Epwm.c文件要包含.h文件,不要在Epwm.c文件中写#include"EQep.c"。

因为上面两个文件都是.c文件,所以当在Epwm.c文件中写#include"EQep.c"后,EQep.c中的代码段在Epwm.c被编译了一次,然后在EQep.c文件中由编译了一次。这样就造成了重复定义的问题。

以上是我的拙见,希望能解决你的问题。

我用CCS5 编写一个工程时 在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 就会报错误 。 如果把这两个头文件屏蔽 则不报错误 请问大家这是为什么?

error: symbol "_ePWM" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eCAP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"
error: symbol "_eQEP" redefined: first defined in "./Epwm.obj"; redefined in
   "./EQep.obj"

jie liang1:

回复 Di Orign:

你理解错我的意思了,我并没有在文件中写#include"EQep.c",我包含的只是.h文件。在Epwm.c文件里调用f2803xpwm.h  在EQep.c里调用f2803xqep.h 这样就会报错误 。f2803xpwm.h和f2803xqep.h这两个头文件都是TI的例程里的.

赞(0)
未经允许不得转载:TI中文支持网 » redefined重复定义问题
分享到: 更多 (0)