Variable
должно быть определено где-то. Я объявил бы ее как глобальную переменную в MyLib.c
, а затем объявил бы ее только как extern
в main.c
.
Что происходит, так это то, что для MyLib.c
и main.c
компилятору говорят, что Variable
существует и является int
, но что-то еще (extern
). Это нормально, но тогда это должно быть на самом деле где-то еще, и когда ваш компоновщик пытается связать все файлы вместе, он не может найти Variable
на самом деле где-нибудь, поэтому он говорит вам, что он не существует.
Попробуйте это:
MyLib.c:
int Variable;
MyLib.h:
extern int Variable;
main.c:
#include "MyLib.h"
int main(void)
{
Variable = 10;
printf("%d\n", Variable);
return 0;
}