Autor Wątek: Zawieszanie się programu.  (Przeczytany 5194 razy)

Offline Rares

  • Użytkownik
    • Moja strona

# Wrzesień 24, 2010, 22:08:07
To weź się za jakiś kurs C++, bo uczysz się chyba czegoś innego, albo co bardziej prawdopodobne, nie skupiasz się na czytanym tekście.

Powiem Ci tylko, że musisz przed main wstawić int.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Orches

  • Użytkownik

# Wrzesień 24, 2010, 22:15:51
Uczę się na pewno C++. xD
Przepraszam z tym "int main()". Ostatnio nie miałem czasu na programowanie i muszę sobie odświeżyć pamięć. :D
Program kompiluje się bezproblemowo. ;)
Dziękuję.

W najbliższym czasie zainstaluje bibliotekę Allegro i sprawdzę czy problem zawieszania się programu nadal występuje. :)

Offline Orches

  • Użytkownik

# Wrzesień 25, 2010, 15:31:02
Zainstalowałem Allegro.
Mam jednak problem...
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
    clear_to_color(screen, makecol(10,10,10));
    textout_ex(screen,font,"NAPIS",20,20 ,makecol(255,255,255),-1);
    readkey();
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Błędy:
Cytuj
1>------ Build started: Project: Okno Allegro, Configuration: Debug Win32 ------
1>  Okno Allegro.cpp
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__allegro_exit referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__readkey referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__textout_ex referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2001: unresolved external symbol __imp__font
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__clear_to_color referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2001: unresolved external symbol __imp__screen
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__makecol referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__set_gfx_mode referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__set_color_depth referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp__install_keyboard referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp___install_allegro_version_check referenced in function "int __cdecl _mangled_main(void)" (?_mangled_main@@YAHXZ)
1>Okno Allegro.obj : error LNK2019: unresolved external symbol __imp___WinMain referenced in function _WinMain@16
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>D:\Programming\Okno Allegro\Okno Allegro\Debug\Okno Allegro.exe : fatal error LNK1120: 13 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Z góry dzięki za pomoc.

Offline Oti

  • Użytkownik

# Wrzesień 25, 2010, 15:40:05
Nie dolinkowałeś bibliotek. To tak jakbyś chciał czytać książkę trzymając ją w ręku, ale nie otwierając jej.

alleg.lib

Offline Orches

  • Użytkownik

# Wrzesień 25, 2010, 16:27:44
Prawie się udało.
#include <allegro.h>
#pragma comment(lib, "alleg.lib")
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
    clear_to_color(screen, makecol(10,10,10));
    textout_ex(screen,font,"NAPIS",20,20 ,makecol(255,255,255),-1);
    readkey();
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Błąd:
Cytuj
1>------ Build started: Project: Okno Allegro, Configuration: Debug Win32 ------
1>  Okno Allegro.cpp
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>D:\Programming\Okno Allegro\Okno Allegro\Debug\Okno Allegro.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Offline lethern

  • Użytkownik

# Wrzesień 25, 2010, 16:39:29
Cytuj
Nie dolinkowałeś bibliotek. To tak jakbyś chciał czytać książkę trzymając ją w ręku, ale nie otwierając jej.
Porównanie co najmniej mylące. Chyba myślałeś o "to tak, jakby zatrudnić robotników i nie wysłać ich na budowę" :p

@up- wpisz błąd w google... Odpowiedź już jest, tylko trzeba poszukać. (np.: change the subsystem to WINDOWS)
« Ostatnia zmiana: Wrzesień 25, 2010, 16:42:54 wysłana przez lethern »

Offline hfjh

  • Użytkownik

# Wrzesień 25, 2010, 19:22:43
@up: nie... Oti był bliżej: to coś jak mieć książkę z samym spisem treści :)

Offline Orches

  • Użytkownik

# Wrzesień 25, 2010, 19:38:22
Wszystko się poprawnie kompiluje.
Ciągle jednak mam problem.
#include <allegro.h>
#pragma comment(lib, "alleg.lib")
int main() {
    allegro_init();
    install_keyboard();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
    install_mouse();
    show_mouse(screen);
    unscare_mouse();
    clear_to_color(screen, makecol(0,0,0));
    while(!key[KEY_ESC])
    {
    if(mouse_b == 1)
    {
    putpixel(screen, mouse_x, mouse_y, makecol(255,255,255));
}
    if(mouse_b == 2)
    {
    clear_to_color(screen, makecol(0,0,0));
    }
    }
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Kompiluje się wszystko bezproblemowo. Gdy jednak uruchomię aplikację po kilku sekundach zawiesza się, dokładnie w ten sam sposób jak to było z Dev-C++ (w przypadku VC++ program działa około 10 sek - w Dev-C++ trwało to około 1 sek).
Posiadam Windows 7 i system informuje mnie o zaistniałym problemie:
Cytuj
Opis:
  Problem spowodował, że ten program przerwał interakcję z systemem Windows.

Podpis problemu:
  Nazwa zdarzenia problemu:   AppHangB1
  Nazwa aplikacji:   Okno Allegro.exe
  Wersja aplikacji:   0.0.0.0
  Sygnatura czasowa aplikacji:   4c9e23f7
  Podpis zawieszenia:   3e0d
  Typ zawieszenia:   1
  Wersja systemu operacyjnego:   6.1.7600.2.0.0.256.1
  Identyfikator ustawień regionalnych:   1045
  Dodatkowy podpis zawieszenia 1:   3e0debb1ed33c79f4cbd528367f1ad1b
  Dodatkowy podpis zawieszenia 2:   5524
  Dodatkowy podpis zawieszenia 3:   552499688e605f004ec668d950940772
  Dodatkowy podpis zawieszenia 4:   e34b
  Dodatkowy podpis zawieszenia 5:   e34baca1507f8d50c7731ac08d663110
  Dodatkowy podpis zawieszenia 6:   e450
  Dodatkowy podpis zawieszenia 7:   e450f9222571c1ffbca94201cec876fb

Przeczytaj w trybie online nasze zasady zachowania poufności informacji:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0415

Jeśli zasady zachowania poufności informacji w trybie online nie są dostępne, przeczytaj nasze zasady zachowania poufności informacji w trybie offline:
  C:\Windows\system32\pl-PL\erofflps.txt

Wie ktoś co jest nie tak z programem?  :'(

Z góry dziękuję.

Offline Xirdus

  • Redaktor

# Wrzesień 25, 2010, 20:01:09
Odpal program z poziomu VS (gdzieś na górze jest bodajże taka zielona strzałka; ewentualnie Debug->Start debugging albo po prostu F5). Gdy program się wysypie, pojawi się okienko z trzema przyciskami: Break, Continue i coś jeszcze. Klikasz Break. Pokazuje ci się linia, na której się wysypało.

Offline Orches

  • Użytkownik

# Wrzesień 25, 2010, 20:16:11
Nie za bardzo to wyszło... musiałem program wyłączyć ręcznie.
VC++ napisał:
Cytuj
'Okno Allegro.exe': Loaded 'D:\Programming\Okno Allegro\Okno Allegro\Debug\Okno Allegro.exe', Symbols loaded.
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\alleg42.dll', Binary was not built with debug information.
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\ddraw.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\dciman32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\dinput.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\dsound.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\powrprof.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\atiumdag.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\atiumdva.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Unloaded 'C:\Windows\SysWOW64\atiumdva.dll'
'Okno Allegro.exe': Unloaded 'C:\Windows\SysWOW64\atiumdag.dll'
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\hid.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\atiumdag.dll', Cannot find or open the PDB file
'Okno Allegro.exe': Loaded 'C:\Windows\SysWOW64\atiumdva.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0xac4) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x898) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0xf78) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0xbf0) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x12c) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x6d0) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x88c) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x8e0) has exited with code -805306369 (0xcfffffff).
The program '[3384] Okno Allegro.exe: Native' has exited with code -805306369 (0xcfffffff).

Eh... przeprowadziłem też prosty test. Napisałem program z użyciem pętli while(!key[KEY_ESC]), lecz nie instalowałem myszki. O dziwo program się nie zawiesił. Wychodzi na to, że wina leży po stronie obsługi myszki.
Jak można inaczej/poprawnie ją zainicjować w Allegro?

Z góry dziękuje. :)

Offline Xirdus

  • Redaktor

# Wrzesień 25, 2010, 20:42:10
Ale co nie wyszło?
Te błędy o brakujące PDB to je olej.

Offline Orches

  • Użytkownik

# Wrzesień 25, 2010, 22:55:56
Eh jakbyś przeczytał kod to byś zrozumiał. Program kliknięciem maluje piksel na biało. Po pewnym czasie po prostu się zawiesza. Ciągle te same operacje są wykonywane... A VC++ nie wyświetlił mi tych 3 przycisków o których mówiłeś.

Offline m4r10

  • Użytkownik

# Październik 03, 2010, 13:17:57
Tez mam z tym problem, mam Windows 7 i kiedy chce uzyc myszki w Allegro to sie zawiesza. Wszystko funkcjonuje bezproblemowo az na ta myszke  :(