.Net - 用.C或C++编写的应用程序可以使用.Net编写的类库(dll)吗?

mos*_*r67 3 .net c++ interop

假设我已经在.Net中编写了一个类库(dll),现在我让开发人员在他们的.Net应用程序中使用它.

但是,库本身对于本地编写的开发人员(在C或C++中)也可能是有用的.所以我的问题是我的托管DLL是否可以在C或C++中使用?

如果没有,为什么?也许我必须添加一些特定的代码才能让本机编码器使用它?

谢谢.

编辑:如果其他人对此问题感兴趣,我发现Google Books上的这篇文章介绍了如何使用COM中的Net.classes.

Ada*_*son 10

在基于CLR的语言之外公开.NET程序集的唯一方法是通过COM Interop.您无法直接以非托管语言引用.NET .dll.

原因是所使用的".dll"文件扩展名纯粹是出于外观和一致性的错觉..NET生成的.dll文件不包含任何机器代码,它们包含在运行时编译的IL(中间语言)(称为即时编译或JIT).代码在放入.dll文件时不会编译.结果,没有任何非托管语言可以执行.

COM interop允许CLR加载.dll,执行JIT编译,并使用COM系统处理本机代码和.NET .dll之间的通信.