Ti C2800 DSPs: مشاكل رابط استكشاف الأخطاء وإصلاحها بين C ++ ورمز التجميع
سؤال
لدي وظيفة sincos_Q15_asm()
في التجميع ، في ملف SINCOS_P5SH.ASM مع توجيهات على النحو التالي:
.sect ".text"
.global _sincos_Q15_asm
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0
.func 1
تعمل الوظيفة بشكل جيد عندما أختبرها بنفسها (التجميع فقط) ، لكن عندما أحاول الارتباط بها ، أحصل على خطأ في الارتباط:
undefined first referenced
symbol in file
--------- ----------------
sincos_Q15_asm(int, int *) build\pwm3phase.obj
error: unresolved symbols remain
هذا أمر محير للغاية بالنسبة لي ، حيث أنني بما في ذلك الملف المجمع build\blocks\sincos_p5sh.obj
في أمر الرابط الخاص بي ، واستخدمت Lister المطلقة abs2000
في ملف OBJ هذا ويقول أن هناك رمزًا _sincos_Q15_asm
. (البادئة السفلية هي كيف تعمل للتجميع)
أي اقتراحات ما الذي يجب علي استكشاف الأخطاء وإصلاحها بعد ذلك؟
المحلول
دو! لقد اكتشفت ذلك - كنت أستخدم C ++ ونسيت تضمين extern "C"
إعلان وظيفتي:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}
لا تنتمي إلى StackOverflow