【发布时间】:2022-01-03 14:29:51
【问题描述】:
我一直在想,为什么我的 c++ 项目没有编译外部库 SAMDTimerInterrupt.h
我收到以下错误:
C:Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\Stimulator.cpp.o: In function `TC3_Handler':
C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:410: multiple definition of `TC3_Handler'
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\GVS_Simulator_V.1.8.ino.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:410: first defined here
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\Stimulator.cpp.o: In function `TCC0_Handler':
C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:423: multiple definition of `TCC0_Handler'
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\GVS_Simulator_V.1.8.ino.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:423: first defined here
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\Stimulator.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:399: multiple definition of `TCC_callback'
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\GVS_Simulator_V.1.8.ino.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:399: first defined here
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\Stimulator.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:398: multiple definition of `TC3_callback'
C:\Documents\vsCode builds\GVS_Stimulator_V1.8\sketch\GVS_Simulator_V.1.8.ino.cpp.o:C:\Documents\Arduino\libraries\SAMD_TimerInterrupt\src/SAMDTimerInterrupt.h:398: first defined here
And here is a link to the external library
我注意到该库在头文件中有定义和声明。 这是问题的根源吗?当我只使用一个 main.cpp 文件时,它会编译。 (注:我只使用 Stimulator.cpp 中的库)
提前致谢, 会
【问题讨论】:
-
您在项目页面上看到this notice 了吗?再说一遍..所有三个变体都包含 TC3_Handler 的重复定义...
-
您能否在 stimulator.h 中从 SAMDTimerInterrupt.h 中前向声明您需要的位,并在单独的 .\cpp 文件中#include SAMDTimerInterrupt.h?
-
是的,我看过这个!但是正如你所说的src、src_cpp、src_h中的SAMDTimerInterrupt.h是一样的!
-
我会向库提交一个错误并创建您自己的 SAMDTimerInterrupt 子集。
-
是的,可能必须这样做。