2016-05-15 5 views
0

Ich halte Fehler in Thema erwähnt bekommen (keine zusätzlichen Nachrichten), wenn ich versuche, die Datei in Qt libsndfile Bibliothek in folgendem Code zu öffnen:Fehler: Großformat 0 (libsndfile, Qt)

SNDFILE * outfile; 
    SF_INFO sfinfo; 

    //preparing output file 
    sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; 
    sfinfo.channels = 1; 
    sfinfo.samplerate = 44100; 

    memset(&sfinfo, 0, sizeof(SF_INFO)); 
    const char* path = "RainFilter.wav"; 

    outfile = sf_open(path, SFM_WRITE, &sfinfo); 

    if(!(outfile)) 
    { 
     std::cout << "Failed to create output file" << std::endl; 
     sf_perror(outfile); 
     return; 
    } 

Dies scheint ein Problem mit einem Großteil der Formateigenschaft von sfinfo zu sein. Ich habe die meisten anderen Formate versucht, einschließlich numerischer Werte wie zum Beispiel:

sfinfo.format = 0x0B0000 | 0x0006; 

Was soll ich tun? Ist es das Bibliothek-Verknüpfungsproblem, das Umgebungsproblem oder ist der Code falsch? Der Pfad ist in diesem Fall irrelevant. Ich habe versucht, auf ein anderes Verzeichnis zu zeigen, und das Problem bleibt bestehen.

Antwort

1

den Anruf zu

Bewegen
memset(&sfinfo, 0, sizeof(sfinfo)); 

    //preparing output file 
    sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; 
    sfinfo.channels = 1; 
    sfinfo.samplerate = 44100; 

zu vor die Zuordnung zu den Elementen der SFinfo. Noch besser: Entfernen Sie den Aufruf von memset, und initialisieren Sie die Struktur ordnungsgemäß mit:

SFINFO sfinfo = {0}; 
    sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; 
    sfinfo.channels = 1; 
    sfinfo.samplerate = 44100;