2014-03-19 150 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的缘故的包装。您可能会遇到一些互操作问题,因为从托管代码移到非托管代码时,它们总是可以弹出。