您可以为DLL 编写包装类.这些很受欢迎.第三方库提供程序通常提供包装其DLL API的封装.NET程序集(用C++,C等编写)
在您的包装器类中,只是DllImport
库DLL中的所有API函数.然后就像任何.NET类方法一样使用这些函数.
但是,在实践中,您有时必须编写自己的.NET兼容方法来调用这些导入的函数,因为您需要提供参数类型映射和其他检查.
还要考虑提供方便的重载方法,因为CLR支持它们而不是所有非托管库都支持.
或者,如果该非托管DLL是一个COM模块,并且您只是想按原样使用它,并且如果您使用的是Visual Studio,则只需"添加引用"即可,Visual Studio将自动为您创建一个Interop包装类.
如果您的非托管DLL不是COM模块,但您仍希望将其自动转换为符合CLR的程序集(无需编写包装类),则必须记录IDL文件中的所有API函数.通常,如果您的库是C++或C DLL,它们将具有C++/C源格式的头文件,可以很容易地重构为IDL文件(使用C语法).然后使用为该DLL midl
创建一个类型库.然后,您可以将该类型库转换为.NET程序集tlbimp
.