Задать вопрос
@HamsterGamer

Почему не находится определение при линковке объектников ассемблера и c++?

Имеется следующий код на c++ (файл main.cpp):
#include <iostream>

extern int _sub(int, int);

int main() {
    std::cout << _sub(3, 15);
    return 0;
}

и реализация функции _sub (файл sub_f.asm):
section .text

global _sub
_sub:
    mov rax, rcx
    sub rax, rdx
ret

При компиляции и линковке следующим образом;
nasm -f elf64 -g sub_f.asm -o sub_f.o
g++ -c main.cpp -o main.o
g++ -o asm_test.exe main.o sub_f.o

почему-то выдается ошибка: undefined reference to `_sub(int, int)' (компилируется и линкуется на платформе Linux)
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@galaxy
Попробуйте extern "C" int _sub(int, int);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы