Комбинированная программа С++ assembler

Пишу программу на с++, она вызывает процедуры из другого файла на ассемблере. Смысл простой: заполняется массив и в нем с помощью ассемблерных процедур ищется наибольший и наименьший элемент. Но при компоновке получаю такую ошибку:

/usr/bin/ld: casm.o: in function `main':
/comb/casm.cpp:22: undefined reference to `findmax(int*, int)'
/usr/bin/ld: /comb/casm.cpp:23: undefined reference to `findmin(int*, int)'
collect2: error: ld returned 1 exit status

Подскажите пожалуйста, как можно решить проблему

Код на с++:

#include <iostream>
using namespace std;
extern int findmax(int * array, int iter);
extern int findmin(int * array, int iter);

int main()
{
    int arr_size, max, min;
    int iter = arr_size + 1;
    int *arr = new int[arr_size];

    cin >> arr_size;
    for (int i = 0; i < arr_size; i++) {
        cout << "Value of " << i + 1 << " element is ";
        cin >> arr[i];
    }

    max = findmax(arr, iter);
    min = findmin(arr, iter);

    delete [] arr;
    return 0;
}

Код на ассемблере FASM:

format ELF64

public findmax
public findmin

section '.findmax' executable
findmax:
        mov ecx, edi
        mov ebx, esi
        mov eax, [ecx]
        .tmax:
                xor edx, edx
                mov edx, [ecx]
                cmp edx, eax
                jg .gre
                jmp .endi
        .gre:
                mov eax, edx
                jmp .endi
        .endi:
                add ecx, 4
                dec ebx
                jnz .tmax
        ret

section '.findmin' executable
findmin:
        mov ecx, edi
        mov ebx, esi
        mov eax, [ecx]
        .tmin:
                xor edx, edx
                mov edx, [ecx]
                cmp edx, eax
                jl .lessi
                jmp .endi
        .lessi:
                mov eax, edx
                jmp .endi
        .endi:
                add ecx, 4
                dec ebx
                jnz .tmin
        ret

Компилирую как:

fasm find.asm 
g++ casm.cpp find.o -o casm

Ответы (0 шт):