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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…