我需要将字符串列表传递给非托管c ++我该怎么做?
我使用IDictionary
作为方法返回类型并通过com发送但它不起作用。怎么做到这一点?
我在C#
中所写的内容如下 -
IDictionary<string,string> postNames()
{
IDictionary<string,string> post=Dictionary<string,string>();
post.Add("Raj");
post.Add("Mahesh");
post.Add("john steek");
return post;
}
然后我为该类创建了一个dll
包含此方法。
现在我如何在非托管c ++中访问这些值....
我担心两件事
1)关于在c ++中携带这些值的返回类型
2)是否可以这样使用..
在这方面有任何帮助吗?
答案 0 :(得分:1)
快速,脏的方法是编写C ++ / CLI包装器。
答案 1 :(得分:0)
这与this question中的问题基本相同。你可以在这里实现完美的Earwicker's answer - 声明一组包含Dictionary并将它们暴露给COM的接口和访问器类。
答案 2 :(得分:0)
可能最简单的方法是传递一个字符串[]并在非托管端使用它作为SAFEARRAY(BSTR)类型。您还可以使用MarshalAs传递字符串[]并将其作为LPStr []在COM中使用(这是MSDN上的示例):
void FunctionCall([MarshalAs(UnmanagedType.LPARRAY,
ArraySubType= UnmanagedType.LPStr, SizeParamIndex=1)]
String [,] ar, int size );
有关详细信息,请参阅Default Marshaling for Arrays。