cannot convert parameter 1 from 'char *' to 'LPCWSTR'

前端 未结 5 908
北海茫月
北海茫月 2020-12-15 06:45

Im trying to load a BMP file

AUX_RGBImageRec *LoadBMP(char *Filename)  // Loads A Bitmap Image
{
    FILE *File=NULL;                      // File Handle

           


        
5条回答
  •  独厮守ぢ
    2020-12-15 07:03

    You're compiling your application with Character-Set set to UNICODE (Project Settings -> Configuration Options -> General). Windows header files use #defines to "map" function names to either nameA (for multi-byte strings) or nameW (for unicode strings).

    That means somewhere in a header file there will be a #define like this

    #define auxDIBImageLoad auxDIBImageLoadW
    

    So you're not actually calling auxDIBImageLoad (there is no function with that name), you're calling auxDIBImageLoadW. And auxDIBImageLoadW expects a unicode string (wchar_t const*). You're passing a multi-byte string (char const*).

    You can do one of the following

    • change your project to use multi-byte character set (-> project settings)
    • explicitly call the multi-byte version of the function by replacing auxDIBImageLoad with auxDIBImageLoadA
    • change your LoadBMP function to accept a unicode string itself
    • convert the string to unicode inside LoadBMP

    I'd recommend either changing LoadBMP to accept a unicode string itself or calling auxDIBImageLoadA directly (in that order). Changing the project settings might be OK if it doesn't break a lot of other code. I would not suggest converting the string though, since it's unnecessary. Calling auxDIBImageLoadA directly is far easier, and the result is the same.

提交回复
热议问题