我寫了一個功能組件文件math.nasm 哥們如下調用匯編程序
%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
我打電話從C函數FUNC1文件myfunc.c此功能
我使用我使用NASM彙編程序的彙編文件的Xcode 3.1版本和GCC 4.0編譯器我已經定義USE_x86_ASM
/建設/ NASM構建選項/其他標誌AS -DUSE_X86_ASM
此外,我已經定義了這種預-proces SOR在頭文件myfunc.h也
我已經宣佈在myfunc.h哥們爲
#define USE_x86_ASM
int nABS(int a);
,並列入myfunc.c
myfunc.h兩個myfunc.c和math.nasm被sussessfuly編譯和生成math.o和myfunc.o,但我得到一個鏈接錯誤
Undefined symbols:
"_nABS", referenced from:
_func1 in myFunc.o
誰能告訴我爲什麼我得到鏈接錯誤?
我沒有除了所建議的修改我刪除%IFDEF調節所述修改後的代碼如下所示
.text
.align 2
.globl _nABS
.private_extern _nABS
_nABS: 推EBX ...... ..... 。 pop ebx
ret 仍然我得到相同的鏈接錯誤的文件編譯,但我得到相同的鏈接錯誤。 我檢查了.o生成包含app.LinkFileList。