Как настроить git для объединения нескольких проектов

Ты был на правильном пути. Комментарий @HansPassant указал мне на мгновение «эйрек», когда он предположил, что он взорвался по другому параметру. Первый и второй параметры имеют другой тип. Передано в обратном порядке для :: Invoke, они фактически являются вторым и третьим параметрами. Таким образом, это действительно взорвало мой параметр «1-го» с несоответствием типа.

В моей первоначальной версии концептуальной концепции я вручную передавал параметры, и я целенаправленно передавал параметры в обратном порядке, так как требуется IDispatch :: Invoke. В процессе преобразования этого в более общий подход, зацикливающийся на массив параметров, переданных от вызывающего, я менял порядок параметров ПОСЛЕ вызова вызова IDispatch :: Invoke, когда я возвращаю их в вызывающее приложение, однако, я забыл обратить вспять они по дороге до вызова Invoke.

Священные «вы-знаете-что» ошибки настолько эзотеричны для кого-то, у кого нет опыта работы с этим материалом!

Как только я исправил порядок параметров, все пошло точно так, как ожидалось. «Вариация 1» из моего вопроса была, конечно, правильным способом обработки параметра BSTR *. Для ясности здесь приведен правильный способ инициализации параметра варианта для параметра BSTR *, вызываемого IDispatch :: Invoke (в моем случае есть еще два параметра, которые здесь не показаны)

VARIANTARG* v = new VARIANTARG[3];
//...Init my first 2 args IN REVERSE (not shown here)

//Init my third arg which is the BSTR* parameter
VariantInit(v[0]);
BSTR val = SysAllocString(L"");
v[0].vt = VT_BSTR | BT_BYREF;
v[0].pbstrVal = &val;
0
задан xforfun 5 March 2019 в 08:34
поделиться