DSP

DSP 由C升级至C++的错误error: symbol referencing errors 解决

2019-07-13 11:42发布

  undefined                        first referenced  symbol                              in file ---------                        ---------------- _vectors()                       D:/temp/DM642 DEMO/IP106_GrayStretch/Debug/dm642main.obj _VPCapChaAIsr                    D:/temp/DM642 DEMO/IP106_GrayStretch/Debug/ves_dm642.obj >>   error: symbol referencing errors - './Debug/GrayStretchloop2.out' not built     找到函数的头文件,注意没有_下划线,这就是为啥C++通不过的原因。由于C++支持重载,这样就不是同一个函数了。 在头文件中加入:     #ifdef __cplusplus extern "C" { #endif              ......中间的原头文件内容           #ifdef __cplusplus } #endif   汇编代码的转化问题: 如: .global _vectors   _vectors: _vector0:   VEC_ENTRY _c_int00    ;RESET _vector1:   VEC_ENTRY _vec_dummy  ;NMI _vector2:   VEC_ENTRY _vec_dummy  ;RSVD _vector3:   VEC_ENTRY _vec_dummy _vector4:   VEC_ENTRY _vec_dummy _vector5:   VEC_ENTRY _vec_dummy _vector6:   VEC_ENTRY _vec_dummy _vector7:   VEC_ENTRY _vec_dummy _vector8:   VEC_ENTRY _vec_dummy    _vector9:   VEC_ENTRY _vec_dummy _vector10:  VEC_ENTRY _vec_dummy _vector11:  VEC_ENTRY _VPCapChaAIsr ; Hookup the c_int08 ISR in main() _vector12:  VEC_ENTRY _VPDispIsr    ; Hookup the c_int08 ISR in main() _vector13:  VEC_ENTRY _vec_dummy _vector14:  VEC_ENTRY _vec_dummy _vector15:  VEC_ENTRY _vec_dummy     在引用时,用来的C代码是: extern far void vectors(); 如果升为C++,也会出现错误,稍改如下:   extern "C" far void vectors();   虽然有警告,但不影响使用。