如何将2个字符串列表传递给c++;从c#到COM?
我需要把字符串列表传递给非托管C++,我该怎么做? 我使用了如何将2个字符串列表传递给c++;从c#到COM?,c#,c++,visual-c++,com,C#,C++,Visual C++,Com,我需要把字符串列表传递给非托管C++,我该怎么做? 我使用了IDictionary作为方法返回类型并通过com发送,但它不起作用。如何做到这一点 我在C#中写的内容如下- IDictionary<string,string> postNames() { IDictionary<string,string> post=Dictionary<string,string>(); post.Add("Raj"); post.Add("Mahesh");
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;
}
IDictionary postNames()
{
IDictionary post=字典();
后加(“Raj”);
后加(“Mahesh”);
后加(“john steek”);
回程站;
}
然后我为包含此方法的类创建了一个dll
<如何在非托管C++…< /p>中访问这些值?
我担心两件事
1) 关于在c中携带这些值的返回类型++
2) 有可能这样使用吗
在这方面有什么帮助吗?一个快速、肮脏的方法是编写一个C++/CLI包装器。这与中的问题基本相同。您可以在此处实现perfect—声明一组接口和访问器类,这些接口和访问器类包装字典并将其公开给COM。最简单的方法可能是传递字符串[],并在非托管端将其用作(BSTR)类型。您还可以通过使用Marshallas传递字符串[],并在COM中将其作为LPStr[]使用(这是MSDN上的示例):
有关更多详细信息,请参阅。我认为信息不够。COM对象/接口是否已经定义或正在创建一个新的方法?C++上的哪种列表?MFC客户?STL列表?或者只是普通的空终止数组?为什么是IDictionary?字典包含一对键值元素,但您只有键,没有值。如果只添加字符串,则更适合返回字符串[]或System.Array。
void FunctionCall([MarshalAs(UnmanagedType.LPARRAY,
ArraySubType= UnmanagedType.LPStr, SizeParamIndex=1)]
String [,] ar, int size );