I had similar error message when using GDI+ in a non-unicode app. My filenames were simple char*, yet the load function needed WCHAR*
You just need to use MultiByteToWideChar.
WCHAR wFilename[MAX_PATH];
string fileName;
char *filename;
filename = (char*)fileName.c_str();
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,filename,-1,wFilename,MAX_PATH);
afterwards, wFilename is able to be passed to something wanting a LPWSTR.