用VB.NET编写的dll,通过“引用”使用起来一切正常,但是通过Declare声明则执行函数X的时候提示“在a.DLL中没有发现名为X的入口点”,怎么回事啊?在VB.NET中写DLL怎么定义入口点?
声明如下:
Public Declare Function X Lib "a.dll" (ByVal A As Integer, ByVal B As Integer) As Integer
...全文
53717打赏收藏
在VB.NET中调用DLL找不到入口点?
用VB.NET编写的dll,通过“引用”使用起来一切正常,但是通过Declare声明则执行函数X的时候提示“在a.DLL中没有发现名为X的入口点”,怎么回事啊?在VB.NET中写DLL怎么定义入口点? 声明如下: Public Declare Function X Lib "a.dll" (ByVal A As Integer, ByVal B As Integer) As Integer
------------------------>>>之前加上:Imports System.Runtime.InteropService
DLL(Class_DllTest): <<---------------------这一句应改成:<ComClass()>:
Public Class Class_DllTest
Public Function SumAB(ByVal c As Integer, ByVal d As Integer) As Integer
Return c + d
End Function
End Class
Imports System.Runtime.InteropServices
<ComClass()> Public Class Class_DLlTest
Public Function SumAB(ByVal c As Integer, ByVal d As Integer) As Integer
Return c + d
End Function
End Class
调用:
Public Class Form1
Inherits System.Windows.Forms.Form
Public Declare Function SumAB Lib "Class_DllTest.dll" Alias "SumAB" (ByVal A As Integer, ByVal B As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer = 1
Dim b As Integer = 2
是别名的问题你没有指明接口
可以试试Public Declare Function X Lib "a.dll" Alias "X" (ByVal A As Integer, ByVal B As Integer) As Integer
或
Public Declare Function X Lib "a.dll" Alias "XA" (ByVal A As Integer, ByVal B As Integer) As Integer
DLL(Class_DllTest):
Public Class Class_DllTest
Public Function SumAB(ByVal c As Integer, ByVal d As Integer) As Integer
Return c + d
End Function
End Class
调用:
Public Class Form1
Inherits System.Windows.Forms.Form
Public Declare Function SumAB Lib "Class_DllTest.dll" (ByVal A As Integer, ByVal B As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer = 1
Dim b As Integer = 2