大家好,我在开发中遇到了这样的一个难题,我作了一个名称叫做pubfunction的dll,这个dll中都是项目开发中大家都要用的一些函数,大家在自己的模块开发过程中引用这个dll来使用这些函数,这些函数都是经过了很好的测试,应该说不会在修改了。我把pubfunction这个dll,设置成为二进制兼容。刚开始对于这个dll的引用都是很正常的,后来不知道我是如何做的,好象是把二进制兼容改成了工程不兼容,并且编译了,引用后当然要出现错误,后来有更改回来了(我想应该不是这个原因)
我修改了一个函数的参数个数,当我编译后提示我,是否保持兼容还是不保持兼容。当时我也没有多想就选择了不保留兼容,后来找了一台裸机来测试打包的安装程序的时候,出现了vb的那个经典的问题类不支持自动化。
请问:在编译dll的时候提示的是否保持兼容,应该选择什么?这样的问题应该怎么样来解决呢,现在别人在他们的机器上想使用pubfunction这个dll必须要把这个dll和要调试的dll重新编译才能使用
,给项目开发带来了很多的不便。  
我查了些资料,很多说法是版本的问题!但是依然想不通,请问编译dll和引用dll 的时候都生成或使用那些信息。
这个问题搞的俺都焦头烂额了,还望兄台给俺指点一二!

解决方案 »

  1.   

    最好是选择兼容,以后有改动时在使用的机器上重新注册一下就好了,如果你能确定肯定没有改动,那可以选择不兼容,不过对于调用他的应用程序,应该重新引用该dll,然后重新编译,否则会出现你说的问题。
      

  2.   

    有一台机器(没有开发环境),以前装过安装程序是好使的,后来出现了这个问题后,我把所有的dll都注册了但是,还是不行!关于dll的版本信息通常指的是那些呢
      

  3.   

    不是说了吗?对于调用他的应用程序,应该重新引用该dll,然后重新编译安装
      

  4.   

    在我的机器上 确实是按照你的这个办法来实现的,也通过了,但是在客户的机器上不能编译呀(没有开发环境)这样如果以后维护起来,就没有办法了。现在最头疼的是我把我的机器上重新编译的dll 到客户机器上不好使!(就在本机器上好使)
      

  5.   

    找个以前版本的dll,然后重新选择二进制兼容编译……
      

  6.   

    是的客户端已经重新复制过,并且重新注册了,
    难道和打包程序有关系么?我用的是SetupBuilder在开发环境中编译生成一个dll和开发环境中注册一个dll 有那些区别呢??
      

  7.   

    和打包程序没有关系,但如果选择了不兼容,该DLL的GUID编码已经改变,实质和原来的不同了
      

  8.   

    问题基本解决,就是把这个dll重新编译,在把引用到他的dll 重新编译,!但是我还是不太明白在开发环境中编译生成一个dll和开发环境中注册一个dll 有那些区别!