【问题标题】:TI C2800 DSPs: troubleshooting linker problems between C++ and assembly codeTI C2800 DSP:解决 C++ 和汇编代码之间的链接器问题
【发布时间】:2009-12-29 17:27:58
【问题描述】:

我在汇编中有一个函数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,并且我在这个 obj 文件上使用了绝对列表器 abs2000,它说有一个符号 _sincos_Q15_asm . (下划线前缀是它的装配方式)

有什么建议我接下来应该解决什么问题吗?

【问题讨论】:

    标签: c++ assembly linker ti-dsp


    【解决方案1】:

    天啊!我想通了——我使用的是 C++,但忘记在我的函数中包含 extern "C" 声明:

    extern "C" {
    extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2011-05-30
      • 2010-11-14
      • 2013-04-11
      • 1970-01-01
      相关资源
      最近更新 更多