pawajoro Temat założony przez niniejszego użytkownika |
Przekazwanie argumentów funkcji wywoływanej z _beginthread » 2012-05-29 20:39:01 Mianowicie kod: _beginthread( window( okno ), 0, 0 ); . Kompilator wywala mia błąd.Czy można przekazać argument tej funkcj? |
|
m4tx |
» 2012-05-29 20:42:52 Kompilator wywala mia błąd |
A jakie błędy? Wróżkami nie jesteśmy :) |
|
pawajoro Temat założony przez niniejszego użytkownika |
» 2012-05-29 20:45:10 1>SPWN.cpp(661): error C2664: '_beginthread' : cannot convert parameter 1 from 'void' to 'void (__cdecl *)(void *)' Tadam, magiczna kula odpowiada :) |
|
xevuel |
» 2012-05-29 20:48:05 window( okno ) tu masz błąd, powinieneś przekazać jedynie wskaźnik na funkcję, na dodatek zwracającą void i przyjmującą jako argument void*. A argumenty do funkcji przekazujesz jako ostatni argument funkcji _beginthread. Zapraszam tutaj: Wątki :) |
|
pawajoro Temat założony przez niniejszego użytkownika |
» 2012-05-29 21:31:09 I... 1>SPWN.cpp(24): error C2065: 'okno' : undeclared identifier 1>SPWN.cpp(661): error C2664: '_beginthread' : cannot convert parameter 1 from 'void (__clrcall *)(void *)' to 'void (__cdecl *)(void *)' 1> Address of a function yields __clrcall calling convention in /clr:pure and /clr:safe; consider using __clrcall in target type A oto kody: void window( void * Args ) { Application::Run( okno ); Close(); }
_beginthread( window, 0, okno ); |
|
xevuel |
» 2012-05-29 21:34:13 Bardzo ważną rzeczą jest tutaj konwencja wywołania funkcji – dla procedury wątku tworzonego przez _beginthread musi to być __cdecl. |
A z pierwszym błędem powinieneś poradzić sobie sam, wystarczy przeczytać co jest napisane w logu. |
|
pawajoro Temat założony przez niniejszego użytkownika |
» 2012-05-29 21:42:19 No i porażka bo CRL: 1>------ Build started: Project: SPWN, Configuration: Debug Win32 ------ 1> SPWN.cpp 1>SPWN.cpp(22): error C3641: 'window' : invalid calling convention '__cdecl ' for function compiled with /clr:pure or /clr:safe 1>SPWN.cpp(24): error C2065: 'okno' : undeclared identifier 1>SPWN.cpp(25): error C3861: 'Close': identifier not found 1>SPWN.cpp(559): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data 1>SPWN.cpp(565): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data 1>SPWN.cpp(638): warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data 1>SPWN.cpp(661): error C2664: '_beginthread' : cannot convert parameter 1 from 'void (__cdecl *)(void *)' to 'void (__cdecl *)(void *)' 1> Address of a function yields __clrcall calling convention in /clr:pure and /clr:safe; consider using __clrcall in target type ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Również dlatego, że wpisałem void __cdecl window( void * Args ) |
|
xevuel |
» 2012-05-29 22:01:44 Błędy od 3 do 6 nie są związane z tematem. 2 błąd to brak Twojej dobrej woli poświęcenia pół minuty i przeczytania treści tegoż błędu. Niestety, nie umiem ci pomóc z pozostałymi błędami, a to dlatego, że nie używam Visuala na co dzień, a pod MinGW ten kod działał. Nie wiem, jedyne co mogę teraz zrobić, to polecić ci jeszcze raz do przeczytania ten kurs, bo o ile mi wiadomo, ta część kursu jest pisana pod Visualem (co zresztą wynika z końcowej części tutoriala) Btw., bardzo mnie zastanawia ta linijka: error C2664: '_beginthread' : cannot convert parameter 1 from 'void (__cdecl *)(void *)' to 'void (__cdecl *)(void *)' //Na MSDN'ie masz przykładowy kod: http://msdn.microsoft.com/en-us/library/aa246693%28v=vs.60%29.aspxi cytat: If you are using the Visual C++ development environment, select the Multi-Threaded runtime library in the compiler Project Settings dialog box. |
Może to coś pomoże. |
|
« 1 » |