Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将2个字符串列表传递给c++;从c#到COM?_C#_C++_Visual C++_Com - Fatal编程技术网

如何将2个字符串列表传递给c++;从c#到COM?

如何将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");

我需要把字符串列表传递给非托管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;  
}
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 );