• 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 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ź 719 wizyt
pytanie zadane 19 listopada 2016 w C i C++ przez dorgovor Użytkownik (580 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 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!

...