这是关于您可以遵循的CodeProject的好文章.
在选择重用非托管库的方法时,通常有三个选项:
- IJW或它只是工作.这是.NET Framework为开发人员提供的最大功能之一.您只需在新的.NET平台上重新编译旧代码.不需要或只需要很少的改变.不要忘了; 它仅适用于C++语言.
- COM.COM模型适用于非托管和托管环境.在.NET上执行COM调用很简单.但是,如果您的非托管类不是COM就绪,您可能不会重写所有旧代码以支持COM.
- P/Invoke或平台调用.此机制允许您在属性级别将类作为函数导入.基本上,您将类方法作为单独的函数逐个导入,就像使用Win32 API一样.
对于您的情况,我将建议PlaPlatform调用服务(PInvoke).它allows managed code to call unmanaged functions that are implemented in a DLL.例如,看看这个MSDN代码
// PInvokeTest.cs
using System;
using System.Runtime.InteropServices;
class PlatformInvokeTest
{
[DllImport("msvcrt.dll")]
public static extern int puts(string c);
[DllImport("msvcrt.dll")]
internal static extern int _flushall();
public static void Main()
{
puts("Test");
_flushall();
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个与之相关的旧帖子,你可以在这里查看.