我应该为非托管C ++ DLL创建C ++ / CLI包装器DLL吗?

时间:2011-11-15 15:56:49

标签: c# c++ unmanaged command-line-interface managed

我已经提供了一个包含多个类的非托管C ++ DLL。

我需要能够在C#中使用其中一些类。根据我到目前为止的研究,听起来我需要创建一个C ++ / CLI包装器DLL来处理托管和非托管类型之间的转换。我已经看到一些例子,其中有人基本上会创建每个类的C ++ / CLI版本,它将包含非托管C ++类型的实例。实现我在这里尝试做的最好的方法是什么?非托管DLL中可能提供了10-15个类。现在我只需要使用其中的一些,但将来可能需要使用更多。谢谢!

1 个答案:

答案 0 :(得分:5)

是的,您需要为此库创建C ++ / CLI包装器,并在此包装器内部使用非托管类。对于暴露C风格API的非托管库,还有PInvoke选项,但它不适用于C ++类。

您还可以考虑制作COM包装器,您希望在本机COM客户端和.NET中使用此库。但是我认为制作C ++ / CLI包装器更简单。