2011-06-01 24 views
1

我想編寫一個DLL,它執行一堆事情,包括文件I/O,字符串拆分,處理,輸出大量信息。我使用VS2008,.NET 3.5,C++VS的DLL項目可以使用/返回CLR類型嗎?

我跟着這篇文章

http://msdn.microsoft.com/en-us/library/ms235636.aspx

首先,我的解決方案建立一個來電者(測試)項目,並嘗試調用一個測試函數在DLL中,這是有效的。所以我繼續打開DLL中的CLR編譯標誌,以便我可以更輕鬆地進行字符串處理。但是,這給了我一個鏈接錯誤。我試着在調用者項目中打開CLR編譯標誌,突然間我有兩個鏈接錯誤。

爲了能夠在DLL中使用CLR並能夠將結果作爲對象返回給調用者,我需要做些什麼?

+0

您的DLL的調用者是否也被管理? – 2011-06-02 03:40:47

+0

@Martyn Lovell是的。現在調用者也是Visual C++。它與DLL的解決方案相同。 – Johnyy 2011-06-02 20:26:56

回答

0

是的,您可以通過DLL邊界處的平面API傳遞CLR類型。但只有其他基於C++的/ clr代碼能夠使用它們。而且由於流程只有一個IAT,如果您有多個應用程序域,這並不總是正確。

傳遞託管類型的推薦方法是通過直接託管引用。

馬丁

0

把你的函數內

public ref struct 

,然後使用管理類型參數和返回值變得非常簡單。

如果您想先調用函數而不先創建對象,則使它們爲靜態。

相關問題