在外部文件中使用VB.NET DLL函数不起作用

时间:2016-06-03 17:09:45

标签: .net vb.net dll

我在VB.Net中创建了一个DLL。我知道在C中你可以导出某些函数,以允许它们对使用库的外部文件可见

但是,我的VB.Net库无法使用。例如,在另一个程序中,在添加了我的DLL之后它就找不到任何函数(我试图让这些函数公开但不会改变很多)。

有什么理由?它是VB.Net的东西吗?

编辑:

这里有一笔交易:我在VB中编写一个DLL,它应该允许另一个部门运行测试(Layer就像这样:SQL SERVER - > DLL - >测试应用程序)。我不知道其他部门是如何进行测试的,但我希望这是一段代码片段,可以解释我的问题:

Public Class duct

  //Only the Info should be  be accessible from other application(s)



    Public lt as String
    Private database As String


    Public Function Info(ByVal serialNumber As String) As String
        Dim conn As SqlConnection
        conn = connectionPd()
        Return lt(conn, serialNumber)


    End Function

      Private Function connect() As SqlConnection
        Dim _in As StreamReader
        Dim conn As New SqlConnection
        Dim str As String = String.Empty
        Dim servername As String = String.Empty

        Try
            _in = New StreamReader("file path here")
            While _in.Peek >= 0
                str = _in.ReadLine

                If str.Contains("someString") Then

                    Dim temp(), temp1() As String
                    temp = str.Split("=")
                    temp1 = temp(1).Split(Chr(34))
                    servername = temp1(1)
                ElseIf str.Contains("SomeString") Then
                    Dim temp(), temp1() As String
                    temp = str.Split("=")
                    temp1 = temp(1).Split(Chr(34))
                    database = temp1(1)
                End If
            End While

        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try


        Try
            conn = New SqlConnection("Server = " & servername & ";" & " Trusted_Connection=yes")
            conn.Open()
            Return conn
        Catch msg As Exception
            MsgBox(msg.ToString())
            Return conn
        End Try

    End Function


    Private Function connectionPd() As SqlConnection
        Dim conn As SqlConnection

        conn = connect()
        Return conn

    End Function

End Class

2 个答案:

答案 0 :(得分:1)

听起来有人试图用C或C ++或其他一些母语调用VB .NET DLL。这不起作用。托管你需要经历的CLR或使用C ++ / CLR来编写桥接DLL是一件很重要的事情。

答案 1 :(得分:0)

我认为您正在寻找的是如何使您的.Net DLL COM可见。

只有当应用程序运行用于构建DLL的相同版本的.NET Framework时,使用VB .NET创建的DLL才是可执行的。

由于C / C ++不使用.Net Framework,因此无法加载。因此,您必须使此DLL COM可见。

以下是谷歌搜索的一些链接:

Turn a simple C# DLL into a COM interop component

Making a .NET Dll COM-Visible

我希望这会指引你走向正确的方向。