Неопределенная ссылка на 'print (int)' [Ошибка компоновщика]

Назначение говорит: Напишите программу, состоящую из двух исходных файлов. Первая (Main.c) содержит функцию main() и дает значение переменной ia. Второй исходный файл (Print.c) умножает я на 2 и печатает его. Print.c содержит функцию print(), которую можно вызвать из main().

В моей попытке выполнить это задание я создал три файла: main.cpp

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Global variable
int i = 2;


int main() {
    print(i);

    return 0;
}

print.cpp:

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Fetch global variable from main.cpp
extern int i;

void print(int i) {
    printf("%d", 2*i);
}

print.h:

#ifndef GLOBAL_H // head guards
#define GLOBAL_H

void print(int i);

#endif

Я скомпилировал print.cpp, и когда я попытался скомпилировать и запустить main.cpp, он говорит: [Ошибка компоновщика] неопределенная ссылка на 'print (int)'

Почему он не принимает мое определение void print (int i) в print.cpp и ссылается на него через заголовок print.h? Благодарю!

+1
источник поделиться

Посмотрите другие вопросы по метке или Задайте вопрос