同一个VB写的DLL 在两个程序中调用。原来都OK的,这两个程序其中一个是VB写的。目前对DLL的函数修改了,只改了计算方式,没有改函数的参数。
DLL更新后VB 写的程序  调用还是OK,
可另一种语言写的程序却调用失败,(这种工具好像是LabView,可以控制机器的)
出现报错:2147221231 ClassFacatory cannot supply requested class
在网上查了好久,还是不知道为什么。

解决方案 »

  1.   

    重新引用新的dll
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    工程属性中设为二进制兼容,否则每次编译的 GUID 都是不同的。
      

  3.   

    我是设置了二进制兼容。
    而且对比了CLSID是一样的。
      

  4.   

    现在管理员权限都不可以注册
    出现报错,DLL中有调用ADO连接数据库的。
    dllregisterserver in sss.dll failed.return code was:0x80004005
      

  5.   

    谢谢各位了。我再去对比了下CLSID是不一样的。
    现在找到相匹配的代码了。
    剩下的问题是,电脑不能再注册了。我再想办法吧
      

  6.   

    看来你要查查 labview 的手册了,这个工具没法帮你。
      

  7.   

    看来你要查查 labview 的手册了,这个工具没法帮你。
      

  8.   

    谢谢
    因为这是一位离职同事的程序。不明白C#写的程序调用DLL是什么方式。
    我反注册,重新注册多次后账号就没权限注册了。现在换管理员权限重新注册了,CLSID也和原来一样就OK
    下次更新就不需要重新注册,只需要将新的DLL直接覆盖旧的
    问题解决。
      

  9.   

    C# 工程初次引用 COM 组件(VB6 编写的 xxx.dll)时会生成一个 Interop.xxx.dll,其实就是包含一些 ProgID、CLSID 之类的信息,如果你打破二进制兼容就需要删除后重新添加引用。