Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Compiling C with external Assembly function problem

Zorro26Zorro26 Member Posts: 22

I'm using Turbo c++ 4.0, and get this error:
"Linker error: Undefined symbol _Add_Ext in module ..PROJECTSADD.C in
module ADD.OBJ"

This are the steps I've done before compilation (and please correct me):
1) compiling the Assembly code file ADD_EXT.ASM with MASM 6.11:
I didn't do the linking so i had ADD_EXT.OBJ
This is the Assembly code:
; Listing 2.7. The MASM portion of an external example.

.MODEL MEDIUM ; This tells the procedure to use the
; MEDIUM memory model.

EXTRN first:WORD,second:WORD,third:WORD

.CODE ; This is the beginning of the code.

_Add_Ext PROC FAR ; The procedure is type FAR.
mov AX,first ; This moves the first number into the
; accumulator.
add AX,second ; This adds the second number to the
; accumulator.
mov third,AX ; This stores the result back into
; third.

_Add_Ext ENDP ; This procedure ends here.

END ; This is the end of the code segment.

2) This is the C ADD.C code
// Listing 2.6 The C portion of an external example.


int first=1,second=2,third=0; // These are the integers with
// which we want to work.
extern Add_Ext();

void main(void)
Before adding third = %d",third);
Add_Ext(); // This calls the assembly
// program that will add
// externals.
After adding third = %d",third);
}// end main

3) Compiling the ADD.C file and getting the error I mentioned.
The ADD_EXT.OBJ and ADD_EXT.ASM are in the same directory.
There isn't any problem with the #include since
I managed to compile and run a simple "Hello World" program.

Thanks in advance for your help.

Sign In or Register to comment.