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();
虽然有警告,但不影响使用。
本文探讨了解决C++与汇编混合编程时出现的符号引用错误,通过在头文件中添加特定的C链接说明来确保跨语言调用的一致性,并解决了由此导致的编译错误。
4115

被折叠的 条评论
为什么被折叠?



