我目前碰到一个问题.
当我在本机上开发的时候,编译成ActiveX OCX,在本机可以引用到工程,并使用正常,而当把这个东东放到其他机器上的时候,使用就不正常了,会报告错.
比如,控件名称为MyCtl,里面有一个方法Initial(A as Object,B AS Object)
当值行 MyCtl.Initial a,b 
会提示该行"数据类型不匹配!",当然肯定不存在数据类型不匹配的问题,但是奇怪的是,我在我的机器上可以运行,而拿到这个机器上运行到这句就运行不了,还有更奇怪的是,在这台机器上,只要我重新编译一下,也就OK.
请问这是怎么回事情啊?是不是要在工程选项里有个设置?
DLL地址基是否需要设置?需要怎么设置?
部件跟调试选项里要注意什么呢?
请过路的高手不要只急着赶路,呵,给点指点.哈

解决方案 »

  1.   

    ActiveX OCX\DLL\EXE 有一个借口兼容的问题,编译了第一个版本的结果后修改工程属性-部件,对敌一个版本进行二进制兼容,那么每次编译的结果就不会出现你说的那种问题了。另外一旦进行兼容性编译以后已经public出来的函数名以及其参数结构都不能改变,也就是说只能增加接口不能删除或者修改接口,否则编译的时候将会打破借口兼容性。一旦接口被打破引用该com的工程也需要重新编译才能正常使用。
      

  2.   

    Initial的两个参数传入的分别是什么东西?是COM对象的实例吗?如果是的话并且用的是别人封装的COM对象注意检查两台机器上相应DLL或者OCX的版本是否一致,可能是两台机器上引用的东西接口不一致导致的
      

  3.   

    我认为是API的Any的问题!他是个太模糊的东西!我有遇到这样的情况!
    有些程序的版本不一样!那么ANY的具体类型可能不一致!导致出现这种问题!
    建议修改你的程序!查看是不是存在类型模糊方面的问题。
      

  4.   

    Initial两个参数传入的东东分别是form和Dictionary,
    两台机都是XP,一张安装盘装的呵.但是就存在我所描述的问题呵.
    郁闷ing!