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
в моей команде компоновщика, и я использовал абсолютный листер abs2000
в этом obj-файле и в нем говорится, что есть символ _sincos_Q15_asm
.(префикс подчеркивания - это то, как это работает для сборки)
Есть какие-нибудь предложения, что мне следует устранить дальше?
Решение
Д'о!Я понял это - я использовал C ++ и забыл включить extern "C"
объявление для моей функции:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}
Не связан с StackOverflow