Win CE DLL Import from WIndows throws MissingMethodExceptio

本文关键字:WIndows throws MissingMethodExceptio from Import CE DLL Win | 更新日期: 2023-09-27 17:57:37

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

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

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

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

Win CE DLL Import from WIndows throws MissingMethodExceptio

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