Ошибка сборки "unresolved external symbol" при использовании ассемблерной вставки - Assembler
Формулировка задачи:
Помогите пожалуйста исправить 2 ошибки. Очень долго мучаюсь
Error LNK2019 unresolved external symbol _calc referenced in function _main
Error LNK1120 1 unresolved externals
Задание в вложениях
#define N 4
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <stdio.h>
extern "C" double calc(double, float, float);
void main()
{
double A[N];
float C, D;
printf("Please enter %d elements of array\n", N);
for (unsigned int i = 0; i < N; ++i) {
printf("A[%d] = ", i);
scanf("%lf", &A[i]);
}
printf("C = ");
scanf("%f", &C);
printf("D = ");
scanf("%f", &D);
for (unsigned int i = 0; i < N; ++i) {
printf("result: ", calc(A[i], C, D));
printf("\n");
}
_getch();
}.586
.model flat, c
.data
temp1 dd 0
temp2 dd 0
temp3 dd 0
temp4 dd 0
const1 dd 2.0
const2 dd 41.0
const3 dd 1.0
const4 dd 4.0
.code
_calc PROC
;a[+12] c[+16] d[+20]
push ebp
mov ebp, esp
finit
fld dword ptr [ebp+16] ;c
fcom dword ptr [ebp+20] ;d
fstsw ax
sahf
ja bigger
;>
fld word ptr [ebp+20] ;d
fdiv word ptr [ebp+16] ;d/c
fsubr const2 ;41-d/c
fadd const3 ;41-d/c+1
fstp temp1
fld dword ptr [ebp+12] ;a
fmul dword ptr [ebp+20] ;a*d
fadd const1 ;a*d+2
fldln2 ;ln(a*d+2)
fstp temp2
fmul dword ptr [ebp+16] ;ln(a*d+2) * c
fdiv temp1
jmp next
;<=
bigger:
fld word ptr [ebp+16] ;c
fdiv word ptr [ebp+20] ;c/d
fsub const3 ;c/d-1
fstp temp3
fld dword ptr [ebp+20] ;d
fmul const4 ;4*d
fsub word ptr [ebp+16] ;4*d-c
fldlg2 ;lg(4*d-c)
fstp temp4
fmul word ptr [ebp+12] ;lg(4*d-c)*a
fdiv temp3
next:
pop ebp
ret
_calc ENDP
ENDРешение задачи: «Ошибка сборки "unresolved external symbol" при использовании ассемблерной вставки»
textual
Листинг программы
_calc PROC a_:REAL8, c_:REAL4, d_:REAL4