1、我用vs2010编译器,用debug模式生成的exe为什么不能在其他电脑上运行?文件只有100多k
2、改成release模式编译后,在别的电脑上就能运行,也只有100多k,为什么?
3、有人说要静态编译,生成的文件好几M,也能运行
3和2比有啥区别

解决方案 »

  1.   

    在DEBUG编绎的程序,在非VS2010的计算机运行时要有相应的DLL,运行时会提示缺少什么DLL,好象是MFC42D.DLL这个库
      

  2.   

    DEBUG下就是静态编绎也需要相应的DLL才能在别的计算机上运行,而RELEASE就不需要,因为DEBUG下编绎包括了调试信息
      

  3.   

    release不包括调试信息,DEBUG下包括调试信息。
    静态编绎是把所有需要的DLL都编绎到EXE文件里,这样就不需要在非VS2010的计算机上安装VS2010软件了或安装所需要的DLL;动态编绎不把所需的DLL编绎到EXE里,这样就需要把所需的DLL和EXE都考到别的计算机上才可以运行。
    不管是动态编绎还是静态编绎,在DEBUG下编绎的EXE,在别的计算机上运行都需要一个DLL才行
      

  4.   

    动态么就是还是要调用DLL的,所以小,虽然你就一个EXE,其实其中要到的函数会链接系统库静态么就把DLL中的内容全部编进来了
      

  5.   

    debug版本需要的运行库,不会随windows安装,除非你在电脑上安装编译环境。
    而release版本需要的运行库,一般会安装,所以就出现了你的问题。
      

  6.   

    那为啥我release的exe在别人的电脑(win7)照样能运行?
      

  7.   

    对于2,因为客户机上已经有了mfc100.dll、mfc100u.dll、msvcp100.dll...(具体可看\Program Files\Microsoft Visual Studio 10.0\VC\redist)这些共享的dll
    3、静态编译,就是将上面这些共享的,捆绑到exe里。exe体积自然变大