问题描述:
现在客户A用VB做了个应用程序Demo.exe,该Demo.exe调用了 设备供应商A 提供的控件Control.ocx,该控件封装了对 设备供应商A 提供的机器设备的操作接口。现在问题是:
我们市场人员已经说服客户A使用我们的机器设备,但是有个条件,就是我们必须提供一个和设备供应商A 提供的控件Control.ocx一摸一样的控件,既接口完全一样,同时该demo.exe不能从新编译,既只要将设备供应商A的control.ocx换成我们的Control.ocx,同时使用我们的机器设备,客户A的demo程序就可以运行起来。现在我们提供了和设备供应商A的Control.ocx一摸一样的接口函数,同时我们的Control.ocx的guid 也是和设备供应商A的Control.ocx的guid一样的,但是用我们的Control.ocx替换设备供应商A的Control.ocx后,demo.exe就是运行出错,我想问问ocx能做到和动态加载的dll一样的互换性么?

解决方案 »

  1.   

    控件的属性呢,是不是也是一样的呢,vb装载控件应该先load控件属性的。
      

  2.   

    可以,但接口必须能兼容,就好像Control.ocx要升级一样,只要保持原有的GUID和兼容旧接口就可以了
      

  3.   

    只要接口不冲突应该问题
    这也是com技术的本意
      

  4.   

    现在接口是兼容了,我们的控件也可以被加载了,但是demo.exe一运行就 弹出一个“您没有适当的许可使用该功能”错误框,然后就退出了,不知道如何解决!