VB.NET在便携式类库中使用dllimport

时间:2014-06-02 08:21:45

标签: vb.net windows-runtime

我想将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;

我在这里做错了什么,我怎么能解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:0)

为了将库归类为便携式,它需要遵守一系列限制,包括支持DllImport。在不同的可以使用可移植类库的操作系统中,不支持直接使用本机操作系统调用。

在这种情况下,您需要将组件分成两部分或更多部分。需要调用UnhookWindowsHookEx的控件需要使用第二个特定于平台的组件来实现该功能,并从UserControl中抽象出来。这可以通过使用实现接口的平台特定类来完成:INativeAccess。在运行时,它将使用特定于平台的类(如果可用)。关于此问题,MSDN还有更多内容。

答案 1 :(得分:-1)

就像您希望在代码中使用的任何类型一样,您必须引用定义DllImportAttribute类的程序集才能使用它。您还必须导入其成员的名称空间才能使用不合格的名称空间。你有没有做过这两件事?

即使你有,便携式类库的重点在于它是可移植的。是否可以在您可能将其移植到的所有平台上支持该API?