TI C2800 DSPを:C ++とアセンブリ・コードの間のリンカーの問題のトラブルシューティング
質問
次のように
私はディレクティブをファイルsincos_p5sh.asmに、アセンブリ内の関数sincos_Q15_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
を含めています、と私は、このOBJファイル上の絶対リスタabs2000
を使用してきましたし、それがシンボル_sincos_Q15_asm
があると言うように、これは非常に、私に不可解されています。
(アンダースコアの接頭辞は、それがアセンブリのためにどのように動作するかです)私は次のトラブルシューティングを行うべき任意の提案ですか?
解決
ああD'!私はそれを考え出した - 私はC ++を使用していたし、私の機能のためにextern "C"
宣言を含めるのを忘れます:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}
所属していません StackOverflow