当我对本机函数进行 P/Invoke 时,为什么会产生“NotSupportedException”?
2009-04-17 10:57
351 查看
有三种常见的可能:
托管代码中的声明不正确
.NET Compact Framework 不支持您试图要做的事情
在导出时改变 dll 名称
请检查以下情况:
是否违背任何 .NET Compact Framework P/Invoke 限制?
是否有参数需要预分配内存(即,参数是指针)?如果是这样,您就应该将一个引用传递给现有的变量。
导出函数的名称是否正确?可以通过 DUMPBIN.EXE 来验证
您是否试图传递过多参数?
例如,在以上的第二种情况,RegOpenKey API 需要一个指向 HKEY 的指针作为它的最后一个参数。您可以按照以下方式声明和调用它:
//C#
'VB
托管代码中的声明不正确
.NET Compact Framework 不支持您试图要做的事情
在导出时改变 dll 名称
请检查以下情况:
是否违背任何 .NET Compact Framework P/Invoke 限制?
是否有参数需要预分配内存(即,参数是指针)?如果是这样,您就应该将一个引用传递给现有的变量。
导出函数的名称是否正确?可以通过 DUMPBIN.EXE 来验证
您是否试图传递过多参数?
例如,在以上的第二种情况,RegOpenKey API 需要一个指向 HKEY 的指针作为它的最后一个参数。您可以按照以下方式声明和调用它:
//C#
[DllImport("coredll.dll", SetLastError=true)] public static extern long RegOpenKey( IntPtr hkey, string lpSubKey, ref IntPtr hkeyResult ); public long OpenMySubKey() { IntPtr hkey = IntPtr.Zero; return RegOpenKey(HKEY_CLASSES_ROOT, "MySubKey", ref hkey); }
'VB
_ Public Shared Function RegOpenKey(ByVal hkey As IntPtr, ByVal lpSubKey As String, _ ByRef hkeyResult As IntPtr) As Long End Function Public Function OpenMySubKey() As Long Dim hkey As IntPtr = IntPtr.Zero Return RegOpenKey(HKEY_CLASSES_ROOT, "MySubKey", hkey) End Function 'OpenMySubKey
相关文章推荐
- vs2005 在进行mobile 开发的时候遇到NotSupportedException
- “System.NotSupportedException”类型的异常在 System.Data.Entity.dll 中发生,但未在用户代码中进行处理 其他信息: 在 LINQ to Entitie
- 关于android.content.res.Resources$NotFoundException: String resource ID #0x1错误的产生
- 关于Spring3 MVC的 HttpMediaTypeNotSupportedException
- CloneNotSupportedException
- Jasper Report Server operationnotsupportedexception context is read only
- org.hibernate.QueryException: implicit polymorphism not supported for scroll() queries
- org.hibernate.TransactionException: nested transactions not supported
- .NET 程序在 Windows XP 下调用 SHA512CryptoServiceProvider 方法报 PlatformNotSupportedException 异常
- SQL Server Compact 不支持服务器生成的项和服务器生成的值 异常类型 = "System.NotSupportedException"
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- jquery插件-zTree 使用出现- NotSupportedError: DOM Exception 9 错误
- 为什么我的Class.forName()抛出的异常不是ClassNotFoundException,而是RuntimeException?
- EF执行出错~NotSupportedException
- rand()函数产生的随机数为什么是伪随机数?
- java.lang.UnsupportedOperationException: Not supported by BasicDataSource
- java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
- 澄清整理关于clone(),Clonable和CloneNotSupportedException
- Android在对Sdcard进行文件的读写操作的时候报错FileNotFoundException
- 在定义卷积时为什么要对其中一个函数进行翻转