Ti C2800 DSPs: مشاكل رابط استكشاف الأخطاء وإصلاحها بين C ++ ورمز التجميع

StackOverflow https://stackoverflow.com/questions/1975812

  •  21-09-2019
  •  | 
  •  

سؤال

لدي وظيفة 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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top