У меня есть приложение для размещения CLR, которое я пытаюсь сделать так, чтобы оно поддерживало WPF.
Я попытался установить значение поля в _Assembly
, но проблема в том, что мне нужно передать переменнуютипа VARIANT
.
Это код C #, который я пытаюсь преобразовать в C ++:
Assembly assembly = Assembly.Load(data);
...
field.SetValue(null, assembly); // I'm attempting to do that in C++
Вот что я сделал:
_AssemblyPtr pAssembly = NULL;
...
hr = AppDomain->Load_3(sa, &pAssembly);
...
CComVariant obj;
BindingFlags bFlags = (BindingFlags)(BindingFlags_SetField | BindingFlags_NonPublic | BindingFlags_Static);
hr = fieldInfo->SetValue(obj, CComVariant(pAssembly), bFlags, NULL, NULL);
Ошибка на fieldInfo->SetValue
и более точная на втором аргументе, который должен иметь тип VARIANT
.Ошибка: hr = E_INVALIDARG One or more arguments are invalid.
Если я установлю второй аргумент на CComVariant(NULL)
, он не потерпит неудачу, но мне нужно поставить туда _Assembly
.
Любая идея, как мне поступитьс проблемой?