7

I am getting below error while using this command qmake.exe project.pro -r -spec win32-msvc2015

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

and it worked fine with qmake.exe project.pro -r -spec win32-msvc2013

Means it built fine with win32-msvc2013 but not win32-msvc2015. I have added below line in the project file and after that it I was able to build in 2013 but Not in 2015.

win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings 

Any one have idea on this that what it needing for 2015?

talamaki
  • 5,324
  • 1
  • 27
  • 40

1 Answers1

12

It's because some Windows headers violate strictStrings rules. You could try loosening checking even more:

win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
win32: QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
win32: QMAKE_CFLAGS -= -Zc:strictStrings
win32: QMAKE_CXXFLAGS -= -Zc:strictStrings
talamaki
  • 5,324
  • 1
  • 27
  • 40
  • 1
    I was facing the same issue. This solved my problem. Thanks @talamaki! – Manmohan Singh Sep 12 '16 at 12:08
  • 1
    Please don't do this [`BSTR` is NOT a `wchar_t*`](https://learn.microsoft.com/en-us/cpp/atl-mfc-shared/allocating-and-releasing-memory-for-a-bstr?view=vs-2017) and should not be treated as such when passed to methods requiring `BSTR` – Mgetz Oct 17 '18 at 13:45
  • @Mgetz Be that as it may, MIDL will issue such an assignment for a default value on a string argument in the autogenerated header file. – Craig Feb 08 '19 at 14:04
  • 1
    @Craig that may be, I can't speak to MIDL bugs. I will say that passing a `wchar_t*` to an argument expecting a `BSTR` is undefined behavior according to the COM ABI. – Mgetz Feb 08 '19 at 15:50