Прежде чем сделать комментарий, сказав, что это избыточный вопрос, пожалуйста, позвольте мне поднять детали:
Положение:
Хотя я знаю VB, у меня никогда не было возможности создать DLL с помощью Visual Studio 2010 с использованием VB
Выполнены шаги:
- Запустите VS 2010 и создайте проект, выбрав «Библиотека классов VB».
(.Dll) "
- Создан класс [скажем, Maths.vb] со следующим кодом:
Namespace Maths
Общественный класс по математике
Public Const DLL_PROCESS_DETACH = 0
Public Const DLL_PROCESS_ATTACH = 1
Public Const DLL_THREAD_ATTACH = 2
Public Const DLL_THREAD_DETACH = 3
Public Function DllMain(ByVal hInst As Long, ByVal fdwReason As Long,
ByVal lpvReserved As Long) As Boolean
MsgBox("A")
Select Case fdwReason
Case DLL_PROCESS_DETACH
' No per-process cleanup needed
Case DLL_PROCESS_ATTACH
MsgBox("A")
DllMain = True
Case DLL_THREAD_ATTACH
' No per-thread initialization needed
Case DLL_THREAD_DETACH
' No per-thread cleanup needed
' Case Else
' DllMain = False
End Select
End Function
Public Function AxIncrement(ByVal var As Integer) As Integer
If Not IsNumeric(var) Then Err.Raise(5)
AxIncrement = var + 1
End Function
Public Function AxDecrement(ByVal var As Integer) As Integer
If Not IsNumeric(var) Then Err.Raise(5)
AxDecrement = var - 1
End Function
Public Function AxSquare(ByVal var As Long) As Long
If Not IsNumeric(var) Then Err.Raise(5)
AxSquare = var ^ 2
End Function
End Class
Конечное пространство имен
- Сделайте правый клик на Project и создайте Build >>. Этот шаг даст
вы dll создали Maths.dll
- Теперь закройте проект и создайте новый проект, скажем StandardEXE
- Создайте форму [скажем Form1.vb] с тремя кнопками и поместите следующее
код, нажав Просмотреть код:
Pulic Class Form1
Dim incr As Integer
Dim Decr As Integer
Dim sqr As Long
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
incr = 1
decr = 100
sqr = 2
End Sub
Private Sub cmdSquare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSquare.Click
sqr = AxSquare(sqr)
cmdSquare.Text = "x = " & CStr(sqr)
End Sub
Private Sub cmdIncrement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdIncrement.Click
incr = Increment(incr)
cmdIncrement.Text = "x = " & CStr(incr)
End Sub
Private Sub cmdDecrement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDecrement.Click
decr = Increment(decr)
cmdDecrement.Text = "x = " & CStr(decr)
End Sub
End Class
Щелкните правой кнопкой мыши на Project и выберите Add >> Module1.vb. Вставьте ниже
код:
Module Module1
Public Declare Function Increment Lib "C:\PracProj\Maths\Maths\bin\Release\Maths.dll" (ByVal var As Integer) As Integer
Public Declare Function Decrement Lib "C:\PracProj\Maths\Maths\bin\Release\Maths.dll" (ByVal var As Integer) As Integer
Public Declare Function AxSquare Lib "C:\PracProj\Maths\Maths\bin\Release\Maths.dll" (ByVal var As Long) As Long
Public Declare Function DllMain Lib "C:\PracProj\Maths\Maths\bin\Release\Maths.dll" (ByVal hInst As Long, ByVal fdwReason As Long, ByVal lpvReserved As Long) As Boolean
End Module
Где "C: \ PracProj \ Maths \ Maths \ bin \ Release \ Maths.dll" - это путь к ранее созданной DLL
- Теперь запустите Form1.Vb
Вы увидите, что форма становится видимой, и как только вы нажмете любую из кнопок, вы получите сообщение об ошибке « Невозможно найти точку входа с именем« AxSquare »в DLL» C: \ PracProj \ Maths \ Maths \ bin \ Release \ Maths.dll». »
И я перепробовал все и не смог решить это.
Пожалуйста, объясните мне пропущенные шаги.