Important: Please read the Qt Code of Conduct -

Compile Error with QT Creator 5.9

  • Hi All,

    I have a problem with my project when i use QT creator 5.9. The problem error is:

    C:\Program Files (x86)\Windows Kits\8.1\include\um\sapi.h:12407: error: C2440: 'default argument': cannot convert from 'const wchar_t [1]' to 'BSTR'

    I had investigated on this issue however, i could not find out any solution to resolve it. I have tried to use :
    win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
    win32: QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
    win32: QMAKE_CFLAGS -= -Zc:strictStrings
    win32: QMAKE_CXXFLAGS -= -Zc:strictStrings

    From this link:

    But it does not help.

    Can somebody help me on this?

  • Lifetime Qt Champion


    Qt Creator is innocent in that matter, that's the compiler you are using that is problematic.

    Which version of Visual Studio are you using 2015 or 2017 ?

    Did you re-run qmake after adding these flags ?

  • @SGaist

    I am using Visual Studio 2015. I just tried to run QMake again. I don't get error message any more. However, i could not run my application. The build status is in RED.

    I got this complier error message:

    The kit Desktop Qt 5.9.0 MSVC2015 64bit has configuration issues which might be the root cause for this problem.
    When executing step "Make"

    Should i use Visual Studio 2017?

  • i am still having this error. Are there any way to update my compiler or we should use new one (2017)?

  • Lifetime Qt Champion

  • @jsulm

    It looks like the error from my code. I have a class which support speech text.

    void speechcontext::startSpeaking(){

    qDebug("start speaking thread");
    pVoice = NULL;
    isSpeaking = true;
    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    if( SUCCEEDED( hr ) )
        LPCWSTR text =  (const wchar_t*) currentTextToSpeak.utf16();
        if(currentVoiceToken != NULL){
        hr = pVoice->Speak(text, 0, NULL);
        HANDLE hWait = pVoice->SpeakCompleteEvent();
        HRESULT rs = WaitAndPumpMessagesWithTimeout(hWait, INFINITE);
        if(rs == S_OK){
            qDebug("speaking completed");
        pVoice = NULL;


    Something like that, and i have used:
    #include <sapi.h>
    #include <sphelper.h>
    #include <conio.h>
    #include <iostream>
    #include <string>

    If i remove <sphelper.h> and its components. (some objects used in handle class). I can build my app success. So i think the speech text class is not compatible anymore. I should you QtSpeech in 5.9?

  • Lifetime Qt Champion

    That would be a good idea yes.

Log in to reply