C# DLL 
--------------------------------------------------------------------------
using System;
namespace FileCm
{
public class Class1
{
public static long aa(long x, long y) 
{
return (x*y); 
}
}
}
--------------------------------------------------------------------------
编译成 FileCm.Dll
VB 6 中
----------------------------------------------------------------------------
Declare Function aa Lib "FileCm" (ByVal x As Long, ByVal y As Long) As Longfunction bb()
   aa 1,1
end function 
----------------------------------------------------------------------------
VB 中 出错了,告诉我FileCm中找不到 aa,为啥?
小弟 第一次 Dll  不会用牙,,

解决方案 »

  1.   

    用regasm (好象是这样写)将你的.net DLL注册为vb6可用
      

  2.   

    先把C#程序做成DLL,然后在
    VB : 点project菜单中的reference
      

  3.   

    我试了,好像也不行。我是用regasm注册的,在VB里面能找到这个class但不能实例化。
    用tlbexp导出dll再注册也不行。
      

  4.   

    vb6.0可以吗?我不是很确认,C#的代码需要运行在CLR上,能随便让VB6。0?
    用vb.net应该可以,但是写的时候得注意,需要符合FCL规范。
      

  5.   

    非托管代码可以调用.net托管代码吗?
      

  6.   

    虽然都是dll文件,一个是windows 动态连接库,一个是.net 程序集,不是一码事,建议微软将.net中的类库程序集的文件后缀改为dnl,呵呵
      

  7.   

    我把long改成为int,因为int相当于VB中的long
    using System;
    namespace FileCm
    {
    public class Class1
    {
    public int aa(int x, int y) 
    {
    return (x*y); 
    }
    }
    }
    命令提示符下运行:
    regasm your.dll /tlb:your.tlb /codebase
    然后在VB中引用your.tlb文件
    Private Sub Form_Load()
        Set obj = New Class1
        d = obj.aa(3, 4)
        MsgBox d
    End Sub
      

  8.   

    回复人: hzw66(超越理想) ( ) 信誉:100 
    ------------------------------------------
    我给帖子加了 29 分,谢谢你的回复(非常感谢)
    我用你的方法试了一下,不行
    我这样做的,你看看有没有错:
    1,在 VS.net 下生成 FileCm.dll ,文件在 I:\FileCm.dll
    2,在 命令提示符下 regasm I:\FileCm.dll/tlb:I:\File.tlb/codebase
    3, 在 命令提示符下 regasm I:\FileCm.dll/tlb:File.tlb/codebase
    4,先把FileCm.dll拷贝到C:\Program Files\Common Files\System\Mapi\2052\NT目录下(因为 ReGasm.exe 在 这个目录下),然后 regasm FileCm.dll /tlb:FileCm.tlb /codebase
    以上方法都不行,希望解答
      

  9.   

    日,什么时候价格帖子修改功能
    ----------------------------------------
    我这样做的,你看看有没有错:
    1,在 VS.net 下生成 FileCm.dll ,文件在 I:\FileCm.dll
    2,在 命令提示符下 regasm I:\FileCm.dll/tlb:I:\FileCm.tlb/codebase(失败)
    3, 在 命令提示符下 regasm I:\FileCm.dll/tlb:FileCm.tlb/codebase(失败)
    4,先把FileCm.dll拷贝到C:\Program Files\Common Files\System\Mapi\2052\NT目录下
      (因为 ReGasm.exe 在 这个目录下),然后 regasm FileCm.dll /tlb:FileCm.tlb /codebase
      (失败)
    失败的提示是:RegAsm error: The given path's format is not supported.
      

  10.   

    关注,帮你顶不过c#形成的是中间语言,能否在vb中调用?怀疑!
      

  11.   

    regasm FileCm.dll /tlb:FileCm.tlb
    gacutil -i FileCm.dll注意,命令程序要和dll在同一目录下,或者在可直接访问的Windows目录下。
      

  12.   

    *.tlb 文件生成了,
    但是 在 VB6 中引用时出错了
    他说 装载 DLL 失败兹,,这么困难,还是我笨
      

  13.   

    我也遇到C#或者BCB做的DLL,PB无法调用,后来才知道C#做的DLL叫“类库”,我们需要的是“动态链接库”,一直以为类库是动态链接库的升级版本,向下兼容,谁知道更本是两个东西。咳!我觉得应该有转换为动态链接库的工具或者方法,来来来 ,大家一起想办法!