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 в моей команде компоновщика, и я использовал абсолютный листер 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