在c#中使用DllImport的最佳方法以及如何从外部方法获得控制权

本文关键字:方法 从外部 控制权 DllImport 最佳 | 更新日期: 2023-09-27 17:50:38

我正在调用c#桌面应用程序中的外部方法

[DllImport(CONST_DLL_PATH)]
internal static extern bool ProcessXML(string inputPath, string outputPath);

我有几个问题:

  1. 为DllImport指定EntryPoint或任何其他属性有多重要?
  2. 如果ProcessXML失败,如何从外部方法获得程序执行控制?
  3. DllImport有哪些替代方案?

我想确保在ProcessXML失败的情况下,控制应该返回到应用程序

在c#中使用DllImport的最佳方法以及如何从外部方法获得控制权

1)如果方法名称与DLL的条目名称不同-您必须在EntryPoint属性中指定。否则,你可以省略它。

2)在该方法执行结束后,控制权返回给你。它如何处理错误取决于它的实现,但通常方法返回一个错误代码(在本例中,如果执行成功,可能是true,如果执行失败,可能是false)。同样,这取决于它的实现,但它可能会设置Win32的"LastError"。如果是这样,您应该设置DllImport属性的SetLastError属性,如果失败,您可以调用Marshal.GetLastError(),或者抛出Win32Exception

3) DllImport允许您从非托管DLL中使用方法。您也可以用c++/CLI项目来包装它,以创建托管DLL包装器,但在大多数情况下,这将是一个多余的任务。