2014-03-19 51 views
0

我正在研究一個我真想用C#編寫的應用程序,但我需要使用C++庫。供應商使用一些C++代碼補充它們的DLL,以使API更方便,但它仍然是C++。我想將這個額外的C++代碼加入到我的應用程序中。創建一個DLL來包裝供應商提供的C++代碼和其他調用到我可以在C#中使用的模塊中似乎是合理的。C#的包裝器

我的問題是,是否有意義將DLL包裝在另一個DLL中?我應該注意的潛在問題是?

最佳, 約翰

+0

我建議採取由源提供的部分,並將其轉化爲C++/CLI。 C++/CLI代碼可以直接使用C++庫,無論是通過靜態鏈接還是DLL。反過來,C++/CLI代碼編譯爲.NET程序集,並且可以包含可直接在C#中使用的.NET類型。問題在於,由於.NET類型被垃圾收集器移動,所以不能將這些類型和C++本機類型放在同一個內存塊中。但他們可以互相指點。 –

回答

1

結束語創造一個更好的API(或者,在你的情況下,.NET API)是OK的緣故的包裝。您可能會遇到一些互操作問題,因爲從託管代碼移到非託管代碼時,它們總是可以彈出。