c ++ - Funktionsvarianter mellem forskellige platforme, når du arbejder med lydfiler

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg fulgte et programmeringseksempel for at skrive en lille applikation, detaljerne i selve applikationen er ikke vigtige. Problemet eller bekymringen her er, at leverandøren bruger funktionen POSIX popen() inden for denne applikation.


Koden linje ser sådan ud:



static FILE* fp = popen( "resample mr1789800 r48000 | aplay -fdat 2>/dev/null", "w" );



Og de kompilerede deres kode med g ++, jeg ved ikke, hvilken version de brugte.


Jeg arbejder på en Windows 7 x64 platform i Visual Studio 2017 med compiler indstillet til den seneste udarbejdede standard, alle andre indstillinger er standard eller standardindstillinger. Dette er det generelle scenario.


Alt andet kode i udbydereksemplet ser ud til at være bærbart, det er det eneste stykke kode, som jeg har set, der er indfødt til POSIX funktionalitet.


Det ser ud til, at de bruger popen for at indlæse en fil til et eksternt program, og ved udseendet fra koden ovenfor ser det ud til, at programmet er unixbaseret aplay.


Hvis jeg forsøger at efterligne denne adfærd på Windows ved hjælp af Visual Studio, hvad ville det være de nødvendige værktøjer til at bruge?


Vil \_popen() gøre det samme, hvad betyder de næsten tilsvarende? Hvis ja, så er anden halvdel af spørgsmålet, om aplay er det program, der åbner lydfilen, hvilke muligheder er der til rådighed for mig, der er til Windows, der vil håndtere lydfilen på samme måde som den der findes i et typisk Unix-type system? Hvis ikke; Hvad er forskellene mellem de to og hvor skal jeg hen herfra?

Bedste reference