 <p>Qt does not include a compiler. On Windows you're probably either compiling with mingw or Visual C++. Either way, the issue is that you're calling a function that expects a wide character string but you're trying to hand it an 8-bit character string.</p> <p>For compatibility reasons, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ff381407%28v=vs.85%29.aspx" rel="nofollow">Win32 uses a different set of API functions if you have _UNICODE defined</a>. In your case, you do have _UNICODE defined. You can continue using the 8-bit std::string but simply change the method from <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms648045%28v=vs.85%29.aspx" rel="nofollow">LoadImage() to LoadImageA()</a>. Or if you don't mind changing your Bitmap class, you could switch from std::string to std::wstring to take advantage of Windows' Unicode features.</p> <p>But perhaps the larger question is why use Win32 to load bitmaps and std::string if you're using Qt? Qt's <a href="http://qt-project.org/doc/qt-5/QImage.html" rel="nofollow">QImage class</a> and <a href="http://qt-project.org/doc/qt-5/qstring.html" rel="nofollow">QString class</a> provide a full-featured, cross-platform strings and image loaders. Like any comprehensive framework, Qt works best if you only use external features on an as-needed basis. </p>