Ошибка связана с тем, что перегруженные функции обрабатываются как функции языка Си.Поскольку язык «C» не перегружен, он может иметь только одну функцию с заданным именем.Очевидно, у GLUT есть функция, имя которой совпадает с именем какой-либо другой функции в программе.Это может быть ваша собственная функция (просто проверьте строку glut.h (146 или около того), чтобы узнать, дублировали ли вы имя. Ваш main.c - это программа на «C», так что это приведет к компиляции на языке C (если только выпринудительная компиляция C ++ с переключателем командной строки.) Вы можете попробовать переименовать код в «main.cpp» и перекомпилировать.
Другая возможность - DEFINES не настроены для правильного включения GLUT, а сам GLUTпытаться определить перегруженные функции с тем же именем. Это, вероятно, довольно маловероятно, так как я думаю, что GLUT компилируется в "C".
Вот фрагмент кода, который вызовет ошибку, чтобы вы могли понять, почемуэто происходит. Просто переключите комментирование на вторую подпрограмму "somefunc". Сохраните этот код как C ++ (т.е. myfile.cpp).
//
// Program myfile.cpp
//
#include <stdio.h>
extern "C" float somefunc(int a) { return(a); };
// Un-comment one of the following two lines.
extern "C" float somefunc(float a) { return(a); }; // This line should produce the error.
// float somefunc(float a) { return(a); }; // This line should compile.
void main(void){
printf("Hello World!\n");
}
Удачи,
/ Alan