【发布时间】:2010-11-05 03:31:54
【问题描述】:
我在 C# 中为某些 Display 方法创建了一个 com 组件,它返回一个字符串列表
如下图。在 v++ 中,我使用 std::lst 从 Disp() 捕获返回值,但它
给出 Disp 不是类成员的编译器错误。我将返回类型设为 void 然后
它工作正常。我可以修改什么以便 Disp 返回一个 List 并且在 main(c++) 中我必须使用
这个返回值。
Public interface ITest
{
List<string> Disp();
}
class TestLib:ITest
{
List<string> Disp()
{
List<string> li=new List<string>();
li.Add("stack");
li.Add("over");
li.Add("Flow");
return li;
}
}
成功编译并创建了Test.dll 和test.tlb。 现在在用 c++ 编写的 main 函数中
#include<list>
#import "..\test.tlb"
using namespace Test;
void main()
{
HRESULT hr=CoInitialize(null);
ITestPtr Ip(__uuidof(TestLib));
std::list<string> li=new std::list<string>();
li=Ip->Disp();
}
当我尝试编译它时,我的代码有什么问题
'Disp':不是 TestLib:ITest 的成员
如何解决这个问题请帮助我....当我在 Class 中将其返回类型为 void 时,它工作正常。我犯了什么错误????
【问题讨论】:
-
你在 List
Disp() 中有错字,“return str”应该是“return li” -
@Greco - 啊,当我重新格式化代码时,这就是我的烦恼!
-
嗨,可爱。下次你能不能把你的问题标题写得更清楚一些? :)
-
@Cute - 你试过我在回答中给出的代码吗?我把它放在一个应用程序中并为你测试了它。如果仍然有问题,为什么不尝试并回复?
标签: c# c++ visual-c++ com