ich eine Funktion geschrieben haben NABS in Baugruppendatei math.nasm wie folgtAufruf Assemblierung-Routine in Objective C
%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
ich diese Funktion von c-Funktion func1 in Datei myfunc.c nenne
ich verwende nasm Assembler für Baugruppendatei ich bin mit Xcode 3.1-Version und gcc 4.0 Compiler ich habe USE_x86_ASM definiert
in Xcode Einstellungen Projekteinstellungen/Build/NASM BUILD OPTIONs/ANDERE FLAGS AS -DUSE_X86_ASM
auch ich diese vorher definiert haben -Prozesse sor in myfunc.h auch Datei-Header
Ich habe NAbs in myfunc.h als
#define USE_x86_ASM
int nABS(int a);
erklärt und enthalten myfunc.h in myfunc.c
Beide myfunc.c und math.nasm sind sussessfuly zusammengestellt und erzeugen math.o und myfunc.o, aber ich bekomme einen Verknüpfungsfehler
kann mir jemand sagen, warum ich Linkfehler erhalte?
ich die Modifikation zusätzlich vorgeschlagen habe ich entfernt% ifdef der modifizierte Code Bedingung als
.text
.align 2
.globl _nABS
.private_extern _nABS
_nABS folgt: Push ebx ...... ..... . pop ebx
ret immer noch bekomme ich gleichen Linkfehler die Datei ist kompiliert, aber ich bekomme den gleichen Linkfehler. Ich habe überprüft, dass die .o generiert wird app.LinkFileList enthalten.