Я неоднократно получал эту ошибку в своей программе. Я немного упростил ситуацию, чтобы проиллюстрировать основы, и все еще получаю ошибки. Мне сказали, что мне нужно добавить этот библиотечный файл в мой проект, чтобы он работал (libncurses.dylib), и он действительно решил некоторые проблемы, но не эту.
Вот мой код:
// screen.h
#ifndef screen_h
#define screen_h
#define MAC 1
#define WIN 2
#define LNX 3
#ifdef PLATFORM
#undef PLATFORM
#endif
#define PLATFORM MAC
void screen_erase();
#endif
// screen.c
#include <string.h>
#include <stdlib.h>
#include "screen.h"
#if PLATFORM == MAC
#include <curses.h>
void screen_erase(){
erase();
}
#endif
// main.cpp
#include <iostream>
#include <curses.h>
#include "screen.h"
using namespace std;
int main(){
screen_erase();
}
И вот ошибка, которую я получаю:
Undefined symbols for architecture x86_64:
"screen_erase()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation
Что здесь происходит?