我在汇编文件 math.nasm 中编写了一个函数 nabs,如下所示
%ifdef USE_x86_ASM
SECTION .text
cglobal nABS
;*------------------------*
;* int nABS(int a) *
;* return value in eax *
;*------------------------*
ALIGN 16
nABS:
push ebx
......
......
pop ebx
ret
%endif
我正在从文件 myfunc.c 中的 c 函数 func1 调用此函数
我正在使用 nasm 汇编程序来处理汇编文件 我正在使用 X-code 3.1 版本和 gcc 4.0 编译器 我已经定义了 USE_x86_ASM
在 Xcode 设置 Project Settings/Build/NASM BUILD OPTIONs/OTHER FLAGS AS -DUSE_X86_ASM
我还在头文件 myfunc.h 中定义了这个预处理器,
我也在 myfunc.h 中声明了 nABS
#define USE_x86_ASM
int nABS(int a);
并将 myfunc.h 包含在 myfunc.c 中
myfunc.c 和 math.nasm 都被编译并生成 math.o 和 myfunc.o,但我得到一个链接错误
Undefined symbols:
"_nABS", referenced from:
_func1 in myFunc.o
谁能告诉我为什么会出现链接错误?
我做了修改建议另外我删除了 %ifdef 条件修改后的代码如下
.text
.align 2
.globl _nABS
.private_extern _nABS
_nABS: push ebx ...... ...... pop ebx
ret 仍然出现相同的链接错误,文件已编译,但出现相同的链接错误。我检查了生成的 .o 是否包含 app.LinkFileList。