我想将usercontrol更改为可移植类库。
然而,在我的代码的这一行......
<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
Public Function UnhookWindowsHookEx(ByVal idHook As Integer) As Boolean
End Function
...我收到错误&#34;输入&#39;&#39; DllImport&#39;&#39;没有定义&#39;
。我在这里做错了什么,我怎么能解决这个问题? 谢谢!
答案 0 :(得分:0)
为了将库归类为便携式,它需要遵守一系列限制,包括不支持DllImport
。在不同的可以使用可移植类库的操作系统中,不支持直接使用本机操作系统调用。
在这种情况下,您需要将组件分成两部分或更多部分。需要调用UnhookWindowsHookEx
的控件需要使用第二个特定于平台的组件来实现该功能,并从UserControl中抽象出来。这可以通过使用实现接口的平台特定类来完成:INativeAccess
。在运行时,它将使用特定于平台的类(如果可用)。关于此问题,MSDN还有更多内容。
答案 1 :(得分:-1)
就像您希望在代码中使用的任何类型一样,您必须引用定义DllImportAttribute
类的程序集才能使用它。您还必须导入其成员的名称空间才能使用不合格的名称空间。你有没有做过这两件事?
即使你有,便携式类库的重点在于它是可移植的。是否可以在您可能将其移植到的所有平台上支持该API?