我用VB写了个DLL,TestDLLProject1.DLL,里面的类程序如下:
  Public Function FncTestDLLForDotNet(instr As String) As Integer  FncTestDLLForDotNet = 9  End Function  Public Function FncTestDLLForDotNet2(instr As String) As Integer  FncTestDLLForDotNet2 = 99  End Function然后在C#中的解决方案资源管理器中引入这个DLL,在项目中生成了Interop.TestDLLProject1.DLLC#按钮中的程序如下:
  TestDLLProject1.TestClass1 tc = new TestDLLProject1.TestClass1();  string ss = "kkkk";  int i = tc.FncTestDLLForDotNet(ref ss);  int i2 = tc.FncTestDLLForDotNet2(ref ss);  MessageBox.Show(i.ToString() + " " + i2.ToString());在本机能调试成功。但是复制到另一台没有VB的机器上出现错误。检索COM类工厂中CLSID为{41E0D4F5-2D8A……省略}的组件时失败,原因是出现以下错误:80040154
请问是什么原因?

解决方案 »

  1.   

    是否缺少其它DLL或运行环境?
      

  2.   

    运行
    regsvr32 TestDLLProject1.DLL
    把那个dll注册一下看看
      

  3.   

    没有复制dll吧?把那个dll移植到你的程序目录下,然后重新引用   在另一台电脑上应该就没问题了  
      

  4.   

    三个可能:
    1.dll需要注册
    2.路径不对,重新引用
    3.缺少运行库文件
      

  5.   

    那是注册Interop.TestDLLProject1.DLL还是TestDLLProject1.DLL?
    DLL是用VB6编写的,程序是用C#编写的,引用的VB6编写的DLL经过在另一台机器上调试,发现可能是路径的问题.
    那怎么才能在原来的机器上用VS.NET编好才能在别的机器上使用呢?总不能别的机器都装VS.NET重新设置吧?