本文介绍了如何从C#返回列表,并通过COM在VC ++中使用它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从C#方法返回列表,然后使用C ++中的列表返回值u能给予指导该怎么办呢??结果
我喜欢去下面的方式我的完整方案:



在C#中DemoLib.cs

  USNG系统;使用System.Collections.Generic; 

公共接口IDiscover
{
无效GetList1();
字符串GetList2();
名单,LT;字符串> GetList3();
};

命名空间DemoLibrary

{

类DemoLib
{
公共无效GetList1()
{

Console.WriteLine(我是从虚空的GetList());

}
公共字符串GetList2()
{

Console.WriteLine(我是从字符串的GetList());

返回堆栈溢出;

}

公开名单<串GT; GetList3()
{

名单,LT;字符串> LI =新的List<串GT;();

li.Add(印度);
li.Add(美国);
li.Add(伦敦);

Console.WriteLine(我是从列表<串GT;的GetList());

返回力;
}



成功打造和创建DemoLib.dll



我复制DemoLib.dll到c:\DemoLib.dll并在c Demolib.tlb使用regasm:\



在VC ++现在我甲肝的main()



DemoLibMain.vc ++

 #包括<列表> 

#包括LT&;&stdio.h中GT;

无效的主要()
{

HRESULT HR = CoInitialize的(NULL);

IDiscoverPtr IPTR(__ uuidof(DemoLib));

Iptr-> GetList1();

的std ::字符串str = Iptr-> GetList2();

的printf(%S,STR); // dispalys空insted的堆栈溢出的,但是当我调试它

显示了值堆栈溢出在海峡。



IPTR - >(怕因为它亘古不给GetList3())



当我被迫写Iptr-> GetList3()它显示误差



解决方案

Same question yesterday:

http://stackoverflow.com/questions/1032060/how-to-return-a-collection-of-strings-from-c-to-c-via-com-interop

(Short answer: List won't be included in the COM interface because it uses a generic type).

这篇关于如何从C#返回列表,并通过COM在VC ++中使用它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-11 23:32