That sounds like you probably didn't add the BASS_STREAM_DECODE flag to your BASS_StreamCreateFile call. You could do something like this:
DWORD decoder = BASS_StreamCreateFile(false, filename, 0, 0, BASS_STREAM_DECODE); // create a decoder for the file
DWORD encoder = BASS_Encode_Start(decoder, outfilename, BASS_ENCODE_PCM | BASS_ENCODE_AUTOFREE, 0, 0); // set a WAV writer on it
// processing loop
while (1) {
BYTE buf[20000]; // processing buffer
int r = BASS_ChannelGetData(decoder, buf, sizeof(buf)); // process the decoder (feeds the encoder)
if (r < 0) break; // reached the end
}
BASS_StreamFree(decoder); // free the decoder (and encoder due to AUTOFREE)