Idealnie byłoby mieć całe środowisko, gdy był uruchomiony w kontroli wersji, i budować każdą wersję od tego momentu, aby zobaczyć, gdzie się zepsuł.
Może masz swój kod w kontroli wersji, ale być może nie sam Emscripten. Jeśli zaktualizowałeś Emscripten, może to prowadzić do różnic w zachowaniu. Chciałbym spróbować wrócić do jakiejkolwiek wersji, która była używana podczas pracy. Zauważ, że czasami różne katalogi cache przetrwają zmianę wersji Emscripten i mogą wymagać wyczyszczenia ręcznie (zapomniałem dokładnie).
Zależności pozostałe mogą oznaczać, że próbujesz coś zrobić, zanim program Emscripten załaduje wszystkie inne pliki, których potrzebuje, np. Pliki wymagane przez --preload-file
lub --memory-init-file
. Zauważ, że zgodnie z https://kripken.github.io/emscripten-site/docs/getting_started/FAQ.html#faq-when-safe-to-call-compiled-functions nie powinieneś uruchamiać żadnych funkcji Emscripten, dopóki nie zostanie uruchomiona funkcja C++ main
. Aby to wykryć, możesz na przykład wywołać własną funkcję JavaScript od main
(są inne sposoby).
Fakt, że nie był to problem, mógł być czymś, co wydaje się zupełnie niezwiązane ze sobą: zmiana lub aktualizacja w przeglądarce internetowej, zmiana limitów jednoczesnych pobrań lub zmiana w serwerze sieciowym, z którego jest uruchomiony. Możesz spojrzeć na zakładkę Sieć w przeglądarce, aby sprawdzić, czy coś wyskoczy na ciebie jako coś innego lub podejrzanego.
Jednak, jako główny nie jest jeszcze osiągnięty, to może nie być tak. Spróbowałbym skomentować praktycznie cały twój kod i uczynić go tak, byś miał praktycznie tylko program na cześć świata. Być może nie masz poprawnego ustawienia w obiekcie Module, lub może się nie powieść żądanie pliku inicjującego pamięć (możesz sprawdzić w zakładce Network w przeglądarce dla tego). Jeśli Twój podstawowy program hello world nadal nie działa, możesz wysłać ponownie, wraz z kodem, w osobnym pytaniu.
Zrobiłem tak, jak powiedziałeś i jak się wydaje, wystarczy włączyć sdl.h z prawie pustego projektu, aby to spowodować. –
@ViktorSehr Wpisałbym szczegóły jako osobne pytanie, używając kodu + wiersza poleceń, którego używasz do kompilacji. (Twoje pierwotne pytanie brzmi: "jak to zrobić, znajduję problem", ale teraz jest "jak rozwiązać ten problem") –
"wystarczy włączyć sdl.h z prawie pustego projektu, aby to spowodować" Myślę, że powinien przejść do narzędzia em_sdk i zaktualizować twój kompilator emscripten do najnowszej gałęzi master, a także użyć funkcji "clear cache", aby upewnić się, że odbudowuje ona swoją buforowaną wersję SDL ze źródła. jeśli rzeczywiście masz problem z pakietem SDL (emscripten), to jest błąd, który możesz zgłosić alonowi, myślę, że –