• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[SFML/FTP/C++] Crash przy uruchamianiu programu w trybie release

VPS Starter Arubacloud
+1 głos
359 wizyt
pytanie zadane 26 lipca 2016 w C i C++ przez JAKUBW Nałogowiec (33,470 p.)
edycja 13 października 2016 przez JAKUBW

Witam,

tworzę gre w której będę miał muzykę. Problem w tym, że muzyka waży 9MB (.ogg)  a to trochę dużo jak na małą gierkę i wrzucając tą muzykę do instalatora trochę będzie to warzyć a wolałbym, aby instalator był mały a gra sobie pobierze resztę w trakcie. A więc wziąłem się do roboty, a że zaczynam dopiero przygodę z SFML to robiłem mniej więcej według przykładów znalezionych w internecie.

Wyszło coś takiego:

#include <SFML/Network.hpp>
#include <iostream>

using namespace sf;
using namespace std;

string login = ""; //to jest podane, ale tutaj usunąłem
string haslo = "";//to jest podane, ale tutaj usunąłem
string adres = "";//to jest podane, ale tutaj usunąłem
int main()
{
    //utworzenie polaczenia FTP
    Ftp ftp;
    Ftp::Response odp = ftp.connect(adres.c_str(),21,sf::seconds(10));
    if(odp.isOk())
        cout<<"Polaczono!"<<endl;
    //logowanie
    odp = ftp.login(login,haslo);
    if(odp.isOk())
        cout<<"Zalogowano pomyslnie!"<<endl;
    else
    {
        cout<<"Zly login lub haslo"<<endl;
        cin.get();
        return 1;
    }
    cout<<"Pobieranie..."<<endl;
    odp = ftp.download("VexentoGlow.ogg","",sf::Ftp::Binary);
    if(!odp.isOk())
        cout<<"BLAD"<<endl;
    else
        cout<<"Pobrano!"<<endl;
    getchar();
    ftp.disconnect();

    return 0;
}

(Ten przykład jest od Szymon Siarkiewicz)

I wszystko działało dopóki nie przełączyłem w tryb release.

W release program się wywala przy 

ftp.download("VexentoGlow.ogg","",sf::Ftp::Binary);

Ktoś miał podobny problem? Wie jak temu zaradzić?

Pozdrawiam.

PS: Nie będę kompresować muzyki bo brzmi gorzej niż zmywarka

2 odpowiedzi

+1 głos
odpowiedź 26 lipca 2016 przez niezalogowany

Nie żeby coś, ale pomysł na to, żeby pobierać muzykę i wszystkie potrzebne pliki, zamiast je dać od razu, jest według mnie głupi :I Gry przecież mogą ważyć nawet 1GB (mówię tutaj oczywiście o grach 2D), może 0,5GB, ale to i tak mało.\

No ale OK, zrobiłem swoje (miałem już gotową próbkę, bo wcześniej też się tym bawiłem, tylko pozmieniałem parę rzeczy). Oto mój kod:

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <SFML/Network.hpp>

using namespace std;
using namespace sf;

string napis;
fstream plik;

Ftp ftp;

int main()
{
    cout << endl << "\tWitaj w tym wcale nie korzystajacym z internetu programie :)" << endl << endl;
    cout << "Napisz jakiekolwiek zdanie: ";

    if(ftp.connect("IP_mojego_serwera_FTP").isOk())
    {
        cout << endl << "Polaczono sie z serwerem." << endl;
        if(ftp.login("login","hasło").isOk())
        {
            cout << "Zalogowano sie do serwera." << endl;
            if(ftp.download("3MB_pliku_muzycznego.mp3","",Ftp::Binary).isOk())
                cout << "Pobrano pliki z serwera." << endl;
            else
                cout << "Nie udalo sie pobrac plikow z serwera." << endl;
        }
        else
        {
            cout << "Nie udalo sie zalogowac od serwera." << endl;
        }
        ftp.disconnect();
        cout << "Rozlaczono sie z serwerem." << endl;
    }
    else
    {
        cout << "Nie udalo polaczyc sie z serwerem." << endl;
    }

    cout << endl << "Dziekujemy za skorzystanie z naszych uslug i za pozwolenie zhackowania twojego kompa :)";

    getchar();

    return 0;
}

Po prostu zamieniłem upload() na download() i parę innych rzeczy. I wiesz co? Nie działa :I Ale tylko w trybie Release, tak jak sam powiedziałeś... W trybie Release nie działa ani pobieranie, ani wrzucanie plików. Dziwna sprawa... Twój kod jest w takim razie dobry, ale coś jest z SFML-em. Może napisz o tym na forum SFML-a, bo to jest dziwne, że takie coś jeszcze nie zostało odkryte :/ No chyba, że zostało i jest na forum SFML-a. No, dziwna sprawa.

komentarz 26 lipca 2016 przez JAKUBW Nałogowiec (33,470 p.)

Ale 10MB to się pobierze zanim użytkownik wybierze lvl. Poza tym chcę się nauczyć korzystać z tego:) Aha, no i napisałem na sfml formum ale z moim angielskim to nie wiem czy oni coś zrozumieją :D

komentarz 26 lipca 2016 przez niezalogowany
Tak tak, 10MB to niedużo, wiadomo, no ale... W ten sposób to się pobiera jakieś dodatkowe mapy, jakieś DLC, albo zwykłe update'y :) No ale jak chcesz, nie próbuję cię namówić na inny sposób, ale według mnie, lepiej po prostu dać muzykę od razu z całą grą ;)

Ależ ty umiesz z tego korzystać. Jeśli rozumiesz ten kod, co wkleiłeś, to znaczy, że umiesz z tego korzystać :) Działało ci na trybie Debug, tylko nie działa na Release, więc nie wiem o co chodzi :/

No, ja jak zakładałem tam jakieś posty (póki co chyba 2), to się wspomagałem tłumaczem Google, żeby było ładnie :) Możesz dać linka do tego twojego pytania, ale i tak zrozumieją, tam są nie tylko Anglicy ;) Jest nawet osobny wątek dla Francuzów, bo twórcą SFML-a jest Francuz.
komentarz 26 lipca 2016 przez JAKUBW Nałogowiec (33,470 p.)
komentarz 26 lipca 2016 przez niezalogowany
Post napisany ładnie ;)

Widzę, że już ktoś ci odpowiedział. Dodam tylko od siebie, że u mnie to nie działa, ale sprawdzałem w Code::Blocks'ie, więc sprawdzę jeszcze w Visual Studio 2015 (które teraz zwykle używam).
komentarz 26 lipca 2016 przez niezalogowany
Dobra, okazało się, że w Visual Studio 2015 program działa normalnie i na wersji Debug, i na wersji Release, więc wydaje mi się, że to jest jakiś problem z konkretną SFML-a :/ Póki co, to mogę tyle dodać.
komentarz 26 lipca 2016 przez JAKUBW Nałogowiec (33,470 p.)

A możesz mi proszę powiedzieć o co chodzi z tym co ten użytkownik do mnie napisał na tamtym forum?

So it crashes somewhere in libstdc++. Can you provide the full build command for your application?

Nie bardzo rozumiem o co chodzi...Co mam zrobic...?

komentarz 26 lipca 2016 przez niezalogowany
Szczerze mówiąc, to nie jestem pewien, o co mu chodzi. Mówi coś o standardowej bibliotece C++, czyli na przykład iostream, vector, cstdlib itp., ale nie wiem o co mu chodzi dokładniej :/ Chyba będziesz musiał się zapytać, o co dokładnie chodzi.
komentarz 27 lipca 2016 przez maly Nałogowiec (37,190 p.)
Chce żebyś podał to co masz w "Build log".
komentarz 27 lipca 2016 przez niezalogowany
komentarz 9 sierpnia 2016 przez JAKUBW Nałogowiec (33,470 p.)
edycja 9 sierpnia 2016 przez JAKUBW

Wiecie co? Mam nowy problem... Shadery w trybie release też nie działają pod Code::Block :( Tamtego problemu nie rozwiązałem a już kolejny. Aczkolwiek loadFromMemory działa więc nie wszystko stracone :)

komentarz 9 sierpnia 2016 przez niezalogowany
No, ja się shaderami nie interesuję, więc ja ci w tej sprawie niestety nie pomogę :S Ale ogólnie dziwna sprawa z tymi niedziałającymi rzeczami w trybie Release, no ciekawe :/
0 głosów
odpowiedź 27 lipca 2016 przez maly Nałogowiec (37,190 p.)
Jeśli pobrałeś SFML z oficjalnej strony to może nie działać z kompilatorem dostarczonym z Code::Blocks.

Spróbuj sam skompilować SFML przy pomocy CMake.

Podobne pytania

+1 głos
2 odpowiedzi 252 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez Wojciech Gola Nowicjusz (130 p.)
0 głosów
1 odpowiedź 269 wizyt
pytanie zadane 17 lutego 2018 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
1 odpowiedź 720 wizyt
pytanie zadane 19 listopada 2016 w C i C++ przez dorgovor Użytkownik (580 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...