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();
虽然有警告,但不影响使用。