我用C#写好了一个类,借口明确,现在封成一个dll类文件,如何修改可以通过注册让别的代码(如vb)直接引用呢?望各位大侠不吝赐教

解决方案 »

  1.   

    只要对方开个接口,跟你的DLL文件名字一样,引用下就可以了
      

  2.   

    http://www.vbtonet.com/user-guide-appendix/add-com/Imports System.Runtime.InteropServices[ComVisible(true)][ProgId("Project1.Class1")][ClassInterface(ClassInterfaceType.AutoDual)]
    public class Class1{public void  method1(){
        MessageBox.Show("hello world", Application.ProductName);
    }}
    }
      

  3.   

    你在你的DLL中留有接口函数,他在VB中或者其它任何的程序中都可以引用了,把你的接口函数告诉他,写清楚函数名、参数类型等说明,直接导入就OK
      

  4.   

    借口函数都留好了,只是在vb中如何引用呢?是不是该先生成一个类型库啊,然后还有注册一下类型库,最好是像COM组件那样引用
      

  5.   

    开个接口,名字一样是什么意思?不太明白哦,可不可以把这个dll弄成一个和com组件差不多的东西呢,好像可以做成一个类型库,然后注册一下就可以直接添加了
    但具体操作有问题哦
      

  6.   

    如果是VB.NET使用的话,就直接引用就可以了。VB使用的话,需要反包装一下。
      

  7.   

    http://developer.51cto.com/art/200908/141798.htm
    这上面的方法真的很适合我的需求,但是我执行到2.1生成tlb类型库这一步时,总是提示TlbExp :error TX0000:不支持给定路径的格式
      

  8.   

    我的DLL类是用C#写的,现在想让他通用起来,就是让VB6,或者VB.NET不论哪一个,都可以引用这个DLL类,小弟以前没弄过,真的是比较茫然,大侠们帮帮忙,写的详细点,越详细越好,小弟在这里跪求~~~~
      

  9.   

    1. 创建.NET class//注意1:COM 不支持static方法
    //注意2:提供一个Interface Attribute标明InterfaceType特性为IDispatch
    //      一个实现类 Attribute标明ComSourceInterfaces是实现这个Interface的。
    //      这样COM用的时候,这个类能智能感知出里面所提供的方法。
    //注意3:方法需要标明:ComVisible为true,否则不会为该方法包装。
    namespace MyDLL_COM
    {
        [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
        [ComVisible(true)]
        public interface IDirectory4COM
        {
            string[] GetAllFiles(string directory);
        }    [ClassInterface(ClassInterfaceType.None)]
        [ComSourceInterfaces((typeof(IDirectory4COM)))]
        [ComVisible(true)]
        public class Directory4COM2 : IDirectory4COM
        {
            [ComVisible(true)]
            public string[] GetAllFiles(string directory)
            {
                return Directory.GetFiles(directory);
            }
        }
    }
    2. 工程属性>Build选项卡>Output>Register for COM interop需要选上
    会为该dll包装并注册。
    等同如下(手动调用regasm工具,进行COM注册) c:\windows\Microsoft.NET\Framework\v2.0.50727
    \regasm D:\Fillex\VS2008Projects\CSDNAnswer\MyDLL_COM\bin\Debug\MyDLL_COM.dll但上面工程属性设定后,无需手动调用注册工具。3. VB端调用
    我用的VBA进行的测试:
    Tools > Reference > 选择MyDLL_COM (能看到这个引用,说明前一步注册是成功的)
    Private Sub CommandButton1_Click()
        
        Dim i As Integer    
        Dim b As MyDLL_COM.Directory4COM2
        Set b = New MyDLL_COM.Directory4COM2
        
        str = b.GetAllFiles("D:\Test")
        
        For i = 1 To UBound(str)
            Cells(i, 2) = str(i)
        Next
        
    End Sub