比如比特彗星吧,你查看BitComet.exe的模块会发现,下面调用了msvcp71.dll,msvcr71.dll,MFC42.DLL,MFC42LOC.DLL
前2个是VC 7的运行库,后2个是vc 6的mfc库,我想问,同一个exe,怎么就能同时有2个不同环境的库文件了呢?
   BitComet.exe到底是在VC7/6下编译出来的呢?具体怎么做,才能如此?

解决方案 »

  1.   

    那调用的是库啊。不管在什么环境下或用什么语言编写的dll,在生成dll文件后,它都是二进制数字文件,任何环境下都支持二进制数字吧?
    要不用vc写的dll,vb、java或者c#岂不是用不了了?但事实上它们都可以用的
      

  2.   

    应该是VC6开发的MFC程序用到了.net framework吧,当然也可以是VC6程序加载VC7开发的插件或DLL等。
      

  3.   


    正解。
    DLL库是可以用好多种语言调用的。
    具体看调用方法。
      

  4.   

    不同语言写的编译成lib
    然后连接起来就可以了
      

  5.   

    我说的是BitComet.exe下,我到是比较认同是COM的关系,关dll什么事
      

  6.   

    我来猜测下,应该是啊 VC7下开发的,
    因为用到了 VC6 的东西(VC7包含6的东西)所以给你的感觉是 两个环境开发的同一 exe 文件
      

  7.   


    vc 7能产生含MFC42.DLL的程序?
      

  8.   

    我估计直接LINK两个编译器的OBJ就行。LIB我以前用的不同版本的。
      

  9.   

    连开发工具、开发语言都可以合作开发。模块化开发,比如一个软件有VB写的DLL,又有DELPHI写的DLL,还有VC写的DLL,开发工具的版本问题更是可以合作开发模块……
      

  10.   

    楼主应该不是看的运行时牵扯的DLL,而是直接看EXE静态信息。