首页 > 解决方案 > 在 .net 和 c++ 之间传输字典参数

问题描述

我使用 clrhost 调用一个托管 dll,该 dll 是在 vb.net 中编写的,主要功能是返回一个 Dictionary(Of String, Tuple(Of String, String, String, String))。因为编译了.net dll,所以无法更改函数的返回值

现在主机已成功调用 dll,并返回一个有效值,我怎样才能从结果中获取正确的值。

    variant_t vtRetValue;
    hr = spType->InvokeMember_3(bstrStaticMethodName, static_cast<BindingFlags>(BindingFlags_InvokeMethod | BindingFlags_Static | BindingFlags_Public), NULL, vtEmpty, pArguments, &vtRetValue);
    if (FAILED(hr))
    {
        wprintf(L"Failed to invoke GetStringLength w/hr 0x%08lx\n", hr);
    }

   // std::map<const char*, std::tuple<const char*, const char*, const char*>>  res= static_cast<std::map<const char*, std::tuple<const char*, const char*, const char*>>>(vtRetValue.vt);

在此处输入图像描述

标签: c++vb.netclrstatic-castclr-hosting

解决方案


推荐阅读