如果我为操作系统版本不支持的API使用DllImport (c# . net),会发生什么?
本文关键字:net 什么 DllImport 操作系统 版本 不支持 使用 API 如果 | 更新日期: 2023-09-27 18:04:00
我需要调用一些系统api,这些api仅支持Windows Vista客户端或Windows 2008服务器。我使用DllImport并调用那些方法。但是,我的WPF应用程序还必须支持较旧的平台(尽管很少有客户端)。因此,我的计划是先检测操作系统,然后显示不同的屏幕,而不是调用那些不支持的api。但是我想知道预期的行为
- 当DllImport失败时,应用程序是否无法加载甚至在旧平台上运行?我找不到任何相关文件。
如果是这种情况,那么我将不得不完全避免使用这些api,或者不得不为旧的操作系统构建一个单独的应用程序版本。
稍后我将自己测试这个,并相应地在这里更新。但是,有没有人可以指导我推荐的处理这个问题的方法?
程序集将加载,没有任何问题。调用导入的非托管函数将引发一个EntryPointNotFoundException
.
请参阅异常文档的注释:这里。它声明在以下情况下引发异常:
无法解析对Windows DLL中函数的调用,因为找不到该函数。
因此,您可以简单地将对函数的调用包装在try
- catch
中,并处理函数不以这种方式呈现的情况。