Если вы используете драйверы от производителя видеокарты, в их драйвере может быть ошибка, из-за которой карта перегревается при просмотре видео.
Если вы используете проприетарный драйвер для видеокарты, попробуйте драйвер с открытым исходным кодом, и наоборот.
Поставщики графических карт, поддерживающие Windows или Linux в лучшую или худшую сторону, не виноваты ни в одной из ОС.
Вам необходимо сообщить компилятору, что a
существует вне исходного файла. Для этого объявите его какextern
:
#include <stdio.h>
extern int a;
int main(void)
{
printf("helloworld %d", a);
return 0;
}
Это не имеет ничего общего с динамической , та же проблема будет и со статической компоновкой.
Проблема в том, что вы его не объявили. Однако вы определили его. Вам нужно объявить его с помощью extern int a;
, прежде чем он будет использоваться.
Вы должны сделать это в файле с именемlib.h
(с тем же именем, что и у единицы компиляции, и включить его изlib.c
(для проверки )и из main.c
для его использования.
#include "lib.h"
#include <stdio.h>
int main(){
printf("helloworld %d",a);
return 0;
}
extern int a;
#include "lib.h"
/*other includes that we need, after including own.h*/
/*so we can catch missing dependencies*/
int a=0;