我有一个需要使用旧版Win32 DLL的C#应用程序。 DLL几乎是它自己的应用程序,它有对话框,硬件操作等。当导入和使用这个DLL时,会出现一些问题:
目前我们导入每个方法调用:
[DllImport("dllname.dll",
EntryPoint = "MethodName", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
答案 0 :(得分:1)
我会创建一个exe包装器(可能是非托管的),它为您的新应用程序公开API。
另一种可能的解决方案是创建第二个UI线程,它只处理麻烦的DLL。不过,我更倾向于使用exe包装器,因为这种方法可以更优雅地处理OOM(如果需要,可以重新启动进程)。