У меня есть проект C ++, сформированный из функции main () и объявления класса.
я использую mingw g ++ для компиляции моего кода.
Проблема в том, что даже при хорошей компиляции и компоновке при запуске программы процесс зависает и ничего не показывает.
Это в основном файл main.cpp:
int main() {
printf("....\n");
system("PAUSE");
//Class instance;
return 1;
}
....
class Class {...}
....
я прокомментировал экземпляр класса, чтобы изолировать проблему.
после основной функции есть объявление класса Class.
Для ясности, при запуске из консоли он зависает и не показывает строку printf.
если это может быть полезно, я также связываю библиотеки sfml, которые используются в методах класса.
Как я могу решить проблему? Благодарю.
Попробуйте поместить объявление класса над вашей основной функцией.
C ++ требует, чтобы что-либо было объявлено или определено, прежде чем вы сможете его использовать. Единственное исключение, о котором я знаю, это классика:
int main void()
{
//some code that does stuff;
return 0;
}
который для всех интенсивных целей не может быть объявлен в коде перед использованием.
Поскольку это явно не проблема компиляции / компоновки, это не имеет ничего общего с упорядочением объявлений. Это может быть несколько вещей. Не видя определения класса, мы не знаем, содержит ли он статические определяемые пользователем члены типа с логикой конструктора, вызываемой во время инициализации CRT. Это также могут быть ваши библиотеки. Если у вас загружены динамические библиотеки (общие объекты в * nix или библиотеки DLL в Windows), загрузчик процессов может не найти и / или загрузить их, или разрешить зависимости. Является ли SFML динамичным? Лучший способ устранить это в отладчике. Получите IDE и попробуйте запустить отладочную сборку вашей программы в отладчике.