问题描述
使用 CLR 托管,我尝试将字典参数传递给我的 C# 方法
static public void MyFct(Dictionary<string,string> info)
{
...
}
C++ 部分
CLSID clsid;
CLSIDFromProgID(L"System.Collections.Hashtable",&clsid);
// dict creation
IDictionaryPtr pHash;
CoCreateInstance(clsid,NULL,CLSCTX_ALL,__uuidof(mscorlib::IDictionary),(void **) &pHash);
variant_t vKey(L"key");
variant_t vValue(L"value");
hr = pHash->Add(vKey,vValue);
variant_t vtHash = static_cast<IUnkNown *>(pHash);
// adding it to C# args list
SAFEARRAY* psaStaticmethodArgs = SafeArrayCreateVector(VT_VARIANT,1);
LONG i = 0;
SafeArrayPutElement(psaStaticmethodArgs,&i,&vtHash);
// adding param to C# method call
// (spType is the pointer to my class)
hr = spType->InvokeMember_3(MyFct,static_cast<BindingFlags>(BindingFlags_InvokeMethod | ...),vtEmpty,psaStaticmethodArgs,&vtRet);
但是调用失败 它告诉我“找不到方法”。 当参数类型不匹配时会发生这种情况。
如果它太复杂,我应该使用 C++/CLI(我不是那种东西的忠实粉丝):)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)