Не удается найти точку входа с именем «AxSquare» в DLL «C: \ PracProj \ Maths \ Maths \ bin \ Release \ Maths.dll» - PullRequest
0 голосов
/ 01 февраля 2012

Прежде чем сделать комментарий, сказав, что это избыточный вопрос, пожалуйста, позвольте мне поднять детали:

Положение: Хотя я знаю 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». » И я перепробовал все и не смог решить это.

Пожалуйста, объясните мне пропущенные шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...