2013-03-16 117 views
1

从C#世界我想传递一个List对象的引用到一个C++ - CLI DLL。 C++ -cli dll的命名空间是MatsWrapper。联系人是一个托管对象。C#调用C++ - CLI DLL - 不知道函数参数是否正确

 List<Contact> contactList = new List<Contact>(); 
     String str = "C:\\DATA20110524064.h5"; 
     MatsWrapper.Class1 cl = new MatsWrapper.Class1(); 
     cl.CallMats(str, ref contactList); 

我的C++ -cli dll函数是否有正确的签名?

int MatsWrapper::Class1::CallMats(String^ file_path, std::list<Contact>^ contactList) 
{ 

} 

我无法测试它自己,因为我不知道如何访问到联系对象在C++ - CLI。但是当我发现如何访问它时,我的签名是否与C#调用CallMats的方式一致? 谢谢, sb

+0

Contact类是一个本地类吗?还是托管的? (你可以分享它的代码吗?) – 2013-03-16 19:53:52

回答

1

您的C++/CLI函数需要一个列表<联系人> ^,而不是一个STL列表。但是你的编译器应该指出这一点。使用C++/CLI,你的接口函数应该只包含托管类型。毕竟,这就是C++/CLI的要点,它与托管代码进行交互。

+0

谢谢你nvoigt。 C++ - cli不识别List。 Liast说不是一个模板。我添加了 – 2013-03-16 20:03:38

+0

@JoJoAndChickie列表在System :: Collections :: Generic中,因此您需要为此添加**使用**声明。 – user1610015 2013-03-16 20:23:56

+0

非常感谢,user1610015! – 2013-03-16 21:44:14