2013-03-16 82 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

相關問題