J'ai écrit une fonction NABS dans le fichier d'assemblage math.nasm comme suitappel de routine d'assemblage dans l'objectif 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
J'appelle cette fonction de fonction c func1 dans le fichier myfunc.c
J'utilise assembleur nasm pour le fichier de montage J'utilise Xcode version 3.1 et gcc 4.0 compilateur que je l'ai défini USE_x86_ASM
dans les paramètres Xcode paramètres du projet/Créer/MSNA/AUTRES OPTIONS dE CONSTRUCTION DRAPEAUX eN -DUSE_X86_ASM
aussi j'ai défini cette pré -proces sor dans le fichier en-tête myfunc.h également
je l'ai déclaré dans NABS myfunc.h comme
#define USE_x86_ASM
int nABS(int a);
et inclus dans myfunc.h myfunc.c
Les deux myfunc.c et math.nasm sont compilés sussessfuly et génèrent math.o et myfunc.o, mais je reçois une erreur reliant
Undefined symbols:
"_nABS", referenced from:
_func1 in myFunc.o
quelqu'un peut me dire pourquoi j'obtiens l'erreur de lien?
Je ne la modification proposée en plus je l'ai enlevé% ifdef conditionner le code modifié comme suit
.text
.align 2
.globl _nABS
.private_extern _nABS
_nABS: pousser EBX ...... ..... pop ebx
ret toujours je reçois la même erreur de liaison le fichier est compilé mais je reçois la même erreur de liaison. J'ai vérifié que le .o généré est inclus app.LinkFileList.