[PATCH] D18707: Make DIASession work if msdia*.dll isn't registered.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 1 14:54:48 PDT 2016
zturner added inline comments.
================
Comment at: lib/DebugInfo/PDB/DIA/DIASession.cpp:37-47
@@ +36,13 @@
+ // version we're compiling against by comparing CLSIDs.
+ class DECLSPEC_UUID("3BFCEA48-620F-4B6B-81F7-B9AF75454C7D") DiaSource120;
+ class DECLSPEC_UUID("E6756135-1E65-4D17-8576-610761398C3C") DiaSource140;
+ const wchar_t *msdia_dll = nullptr;
+ if (CLSID_DiaSource == _uuidof(DiaSource120)) // VS2013
+ msdia_dll = L"msdia120.dll";
+ else if (CLSID_DiaSource == _uuidof(DiaSource140)) // VS2015
+ msdia_dll = L"msdia140.dll";
+
+ return msdia_dll &&
+ SUCCEEDED(NoRegCoCreate(msdia_dll, CLSID_DiaSource, IID_IDiaDataSource,
+ reinterpret_cast<LPVOID *>(&DiaDataSource)));
+}
----------------
Why don't we just check `_MSC_VER`? That looks equivalent to this whole guid comparison logic.
#if ((_MSC_VER/100) == 19)
msdia_dll = L"msdia140.dll";
#elif ((_MSC_VER/100) == 18)
msdia_dll = L"msdia120.dll";
http://reviews.llvm.org/D18707
More information about the llvm-commits
mailing list