从Visual Studio VB 2015调用DLL

时间:2015-11-19 08:16:57

标签: vb.net visual-studio dll

我刚刚开始使用VB.NET(Visual Studio 2015),并且在调用用汇编语言编写的DLL时遇到了一个非常基本的问题。在汇编中调用DLL是相当直接的,但在VB中它是我的意思。这是我的代码

Declare Function getDLLInfo Lib "c:\temp\exporter.dll" ()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles    Button1.Click

    Call getDLLInfo.ExportMe()
    Me.Close()
End Sub

ExportMe方法不返回值,只是打开一个对话框以指示成功。我从Visual Studio收到的例外是

{"PInvoke restriction: cannot return variants."}

这里显示的是DLL代码

ExportMe:
push ebp
mov ebp, esp

push 0
push VA(Title)
push VA(Text)
push 0
call [VA(MessageBoxA)]

mov esp, ebp
pop ebp
ret

很明显,该方法不会返回任何内容,但调用该方法的限制是什么?任何人都可以帮助解决这个谜团吗?

1 个答案:

答案 0 :(得分:0)

您没有在VB中声明库本身,只能从库中声明各个函数。库名称仅出现在Lib子句中。

如果ExportMe是您唯一的功能,您应该只写

Declare Ansi Sub ExportMe Lib "c:\temp\exporter.dll" ()