microsoft / WinDbg-Samples

Sample extensions, scripts, and API uses for WinDbg.
MIT License
719 stars 120 forks source link

SimpleIntroRawCOM Build Errors in DbgModel.h #7

Closed AndrewGaspar closed 5 years ago

AndrewGaspar commented 5 years ago

I hit some build errors when trying to build the DbgModel.h sample.

1>------ Build started: Project: SimpleIntroRawCOM, Configuration: Debug x64 ------
1>HelloExtension.cpp
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7133): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7185): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7208): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7248): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7286): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7321): error C3861: 'Make': identifier not found
1>SimpleIntroExtension.cpp
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7133): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7185): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7208): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7248): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7286): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7321): error C3861: 'Make': identifier not found
1>Utility.cpp
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7133): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7185): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7208): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7248): error C3861: 'Make': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7286): error C3861: 'ClassicCom': identifier not found
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\um\dbgmodel.h(7321): error C3861: 'Make': identifier not found
1>Generating Code...
1>Done building project "SimpleIntroRawCOM.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Looking at DblModel.h, it does seem like the references to Make and ClassicCom are insufficiently qualified. Oddly, Intellisense seemed to find the definitions through those usages just fine.

I was able to successfully build by adding these lines to SimpleIntro.h just before the dbgmodel.h include:

static constexpr Microsoft::WRL::RuntimeClassType ClassicCom =
    Microsoft::WRL::RuntimeClassType::ClassicCom;
using Microsoft::WRL::Make;

But I'm guessing that's not supposed to be required.

Using Visual Studio 2017, SDK 10.0.17763, and winver 17763.

aluhrs13 commented 5 years ago

Fixed - https://github.com/Microsoft/WinDbg-Samples/commit/eb30b57f2738c6c83a1d4da0d32ccf7e6e21beb1