eVC中如何调用汇编代码实现的函数

bjyjy 2007-08-28 11:22:54
由于项目需要,将几个函数用ARM汇编代码实现,然后在C代码中调用。

[1] 我将DrawFunc.asm加入到工程中:

AREA |.text|, CODE, ARM

EXPORT DrawLine
EXPORT DrawRound
DrawLine PROC
nop
mov R1, #5
nop
ENDP

DrawRound PROC
nop
mov R1, #10
nop
ENDP
END

[2] 在该文件的Settings-->Custom Build中设置了汇编编译命令:
Commands: armasm -cpu xscale "$(InputPath)" "$(IntDir)/$(InputName).obj" -list "$(IntDir)/$(InputName).lst";
Outputs: $(IntDir)/$(InputName).obj

[3] 然后在.cpp文件中调用该函数:
extern void __stdcall DrawLine();
extern void __stdcall DrawRound();
......
DrawLine();
DrawRound();
......

[4] 编译该工程,结果出现Link错误:
error LNK2019: unresolved external symbol "DrawRound(void)"
error LNK2019: unresolved external symbol "DrawLine(void)"

在ARMV4Rel目录下也确实生成了DrawFunc.obj文件,但不知道为什么
会Link错误。即使在工程的Settings-->Link-->Object/Library Modules中加入DrawFunc.obj目标文件编译,还是出现该问题;

[5] 如果我将另外一个C++工程中生成的.obj加入本工程,则可以调用.obj中的函数;
...全文
31 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
皮鲁 2007-08-31
  • 打赏
  • 举报
回复
直接把函数COPY到C文件里边
void DrawLine()
{
__asm
{
....
}
}
不同的CPU不同的汇编指令,可不要使用X86的指令为ARM Device写程序。

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧