在c#中使用DllImport的最佳方法以及如何从外部方法获得控制权
本文关键字:方法 从外部 控制权 DllImport 最佳 | 更新日期: 2023-09-27 17:50:38
我正在调用c#桌面应用程序中的外部方法
[DllImport(CONST_DLL_PATH)]
internal static extern bool ProcessXML(string inputPath, string outputPath);
我有几个问题:
- 为DllImport指定EntryPoint或任何其他属性有多重要?
- 如果ProcessXML失败,如何从外部方法获得程序执行控制?
- DllImport有哪些替代方案?
我想确保在ProcessXML失败的情况下,控制应该返回到应用程序
1)如果方法名称与DLL的条目名称不同-您必须在EntryPoint
属性中指定。否则,你可以省略它。
2)在该方法执行结束后,控制权返回给你。它如何处理错误取决于它的实现,但通常方法返回一个错误代码(在本例中,如果执行成功,可能是true
,如果执行失败,可能是false
)。同样,这取决于它的实现,但它可能会设置Win32的"LastError"。如果是这样,您应该设置DllImport
属性的SetLastError
属性,如果失败,您可以调用Marshal.GetLastError()
,或者抛出Win32Exception
。
3) DllImport允许您从非托管DLL中使用方法。您也可以用c++/CLI项目来包装它,以创建托管DLL包装器,但在大多数情况下,这将是一个多余的任务。