【问题标题】:Win CE DLL Import from \WIndows throws MissingMethodException从 \WIndows 导入 Win CE DLL 会引发 MissingMethodException
【发布时间】:2016-11-22 17:30:31
【问题描述】:

我试图从 .Net CF 3.5 应用程序 PInvoke 位于我的 Windows CE 7 设备上的 \Windows 目录中的“i2csdk.dll”。当我尝试执行 PInvoke 时,我得到一个带有附加信息的“System.MissingMethodException”找不到 PInvoke DLL“i2csdk.dll”。 coredll.dll 和 ceddk.dll 中的任何函数的 PInvoke 都可以正常工作,它们都位于 i2csdk.dll 旁边的 \Windows 目录中。

我已验证 i2csdk.dll 在运行时确实存在于 \Windows 中。

我也知道 DLL i2csdk.dll 编译正确,因为当我将 i2csdk.dll 复制到与我的应用程序相同的目录中时,调用成功。这也告诉我这个 DLL 不依赖于另一个 DLL。

我错过了什么吗?是否需要执行某种 DLL 注册步骤?

【问题讨论】:

  • 谁标记了这个问题,请添加评论说明原因。我会很感激反馈。我不介意改写或澄清它。

标签: c# windows pinvoke windows-ce .net-cf-3.5


【解决方案1】:

您可以使用依赖漫游器查看从该 DLL 导出的方法,或者,如果您自己构建它,您可以检查 .def 文件。 如果 DLL 是用 C++ 实现的并且您使用 dllexport 属性,则真正的函数名称是“损坏的”,添加一些用于区分相同基函数的重载的修饰,如果您将函数包装在 extern "C" 中,则不会发生这种情况块,我强烈建议使用 def 文件来避免错误的导出。 如果 DLL 在您的 \Windows 文件夹中,这通常意味着它是操作系统映像的一部分,如果它已作为内核模式模块包含(使用 bib 文件中的 K 标志),则无法从用户模式应用程序访问它.

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
相关资源
最近更新 更多