I am calling ISO_DrawMinutiae (or other function) and the output buffer is always NULL
You are supposed to call the ISO_DrawMinutiae twice. The first time, you get valid outputImageLength that lets you allocate outputBmpImage buffer of sufficient size. The second time, the outputBmpImage buffer is filled with data.
int outputImageLength = 0;
ISO_DrawMinutiae(isoImage, width, height, inputImage, NULL, &outputImageLength);
unsigned char * outputBmpImage = new unsigned char[outputImageLength];
ISO_DrawMinutiae(isoImage, width, height, inputImage, outputBmpImage, &outputImageLength);