我的程序是用ASP调用VB编写的DLL文件,假设有10个DLL文件,其中一个是主DLL,另外9个调用这个主DLL文件,整个程序用INSTALLSHIELD打包完成并安装成功,可以成功调用。但是修改了主DLL文件的内容(只是修改了几个中文)并编译完成,另外9个DLL文件不作任何改动,打包并安装完成后,只有部分DLL文件可被正常调用,另外几个就无法使用了,比较了正常和不正常的DLL文件,看不出什么不同,这可能是什么原因呢?

解决方案 »

  1.   

    你这种情况最好不要在非主dll中使用对主dll的引用,利用CreateObject来创建主dll中的对象比较好。如果你一定要在非主dll中加入对主dll的引用,在你的主dll的接口以后不会再改动的情况下,你可以在工程-〉属性的部件选项卡中的兼容性选择中选择对你的主dll文件进行二进制兼容。这样只要你的接口不改变,你其他的非主dll怎么引用都不会出现这种问题。
      

  2.   

    主要原因是重新编译后,GUID可能发生了变更
    导致部分组件不能找到这个引用的组件解决方法:
    所有dll采用二进制兼容的方式编译
    如果接口不变动的话,只编译一个不影响其他的调用
    如果接口变更的换,其他的最好也重新打开编译一下
      

  3.   

    我试试看,还是没弄明白,那些可以正常调用的非主DLL文件也不是二进制兼容方式的,可就是可以调用到。