VB中如何调用.Net编写的DLL文件中的函数。譬如DLL文件名:Test.DLL,此DLL文件中有个函数:Function(string1 as string,string2 as string) as boolean,请问在VB中如何调用它?

解决方案 »

  1.   

    似乎不能调用。
    因为Dll的类型不一样。.net的dll既不是API,也不是Activex Dll。
      

  2.   

    如果.net中的dll是com组件
    那么注册引用使用即可
      

  3.   

    那VB中不是能调用VC,Delphi等语言编写的DLL文件吗?为什么不能调用.Net编写的呢?
      

  4.   

    具体的代码没有测试首先在.net中构造程序集
    public class simpleclass
    Implements_simpleClass
    public function Getstring() as string Implements_simpleClass.Getstring
    return "test"
    end function
    创建程序集vbc/t :library test.vb /keyfile:mykey.snk
    需要提供一个强名称,这需要生成密钥文件直接注册程序集
    regasm /tlb:test.tlb test.dll使用tlbexp test.dll/out:test.tlb仅仅生成类型库vb中引用,test.dll
    dim obj as SimpleClass
    set obj=new SimpleClass
    text1.text=obj.GetString()
      

  5.   

    创建程序集vbc/t :library test.vb /keyfile:mykey.snk
    需要提供一个强名称,这需要生成密钥文件直接注册程序集
    regasm /tlb:test.tlb test.dll使用tlbexp test.dll/out:test.tlb仅仅生成类型库这几句不是很明白,具体应该怎样创建一个COM组件并注册它呢?是否应在.Net
    中创建一个COM类?我创建了一个COM类文件,如下:Imports Toll.T_Public
    Imports Toll.T_Common
    Imports toll.P_Public<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1#Region "COM GUIDs"
        ' 这些 GUID 提供该类的 COM 标识及其 COM 接口。
        ' 如果您更改它们,现有的客户端将再也无法
        ' 访问该类。
        Public Const ClassId As String = "E6A15252-44ED-4128-A21D-49599780C34B"
        Public Const InterfaceId As String = "C0ADF550-9670-4240-B82A-1B8C4769F8BE"
        Public Const EventsId As String = "C1B389C1-02B7-4D40-8A06-6F6A9EAF7334"
    #End Region    ' 可创建的 COM 类必须具有不带参数的 
        ' Public Sub New(),否则,该类将不会注册到 COM 注册表中,
        ' 而且不能通过 CreateObject 
        ' 来创建。
        Public Sub New()
            MyBase.New()
        End Sub    Public Function TestFunction(ByVal str1 As String, ByVal str2 As String) As Boolean
        '代码
        .........
        .........
        End FunctionEnd Class然后在该项目属性的“为COM Interop注册”前打勾,请问该操作是否正确,谢谢!