NTFS文件系统下,单个文件大小可以超过4G,但是我生成了一个大于4G的单个可执行文件,运行时却弹出"xxx.exe不是有效的Win32程序"的提示框,我稍微测试了一下,生成一个3G多的可执行文件,可以正常运行;刚好是4G的可执行文件还没测试。
    请教各位高手........何解?

解决方案 »

  1.   

    PE文件头数据结构的IMAGE_OPTIONAL_HEADER中有个成员是DWORD   SizeOfImage;
    这个应该指的是这个PE文件的大小;DWORD   是32位,能记录的最大值就是4G;
    超过4G的,Windows在加载的时候会发现记录的大小与实际大小不一样,就认为文件已经损坏,于是报错------------------------猜测而已,渴望高手指点
      

  2.   

    因为你的操作系统是32位的,CPU也是32位的.32位的数值表达范围最大为4G(0xffffffff).
    比如操作系统要将这样的文件读入内存,那文件长度计数就是个问题.就算操作系统能在软件上解决这个问题.
    在硬件上,32位的CPU的寄存器最大也只能表示到4G,指令地址寄存器也不能把你的文件表示完.
      

  3.   

    你有没有试过winrar生成的自解exe?
      

  4.   

    我用7z生成了一个大于4G的自解压文件,生成的自解压文件运行时也提示"xxx.exe不是有效的Win32程序"问题似乎开始明朗了,或许32位Windows根本就不支持大于4G的单个可执行文件?
      

  5.   

    按理说,32位系统没法支持大于4g的
    试试winrar吧,商业软件这方面考虑更周到,如果他也不行,那估计是不行了
      

  6.   

    应该是无法加载超过4G的exe吧
      

  7.   

    32位系统最大的寻址空间也就是4G,在加载EXE文件时是利用内存映射文件来加载的,由于寻址空间的限制所以无法加载.
      

  8.   

    没法寻址。单个PE最大3GB,还得再PE头部加上标志并为系统开通3GB开关
      

  9.   


    用WinRar试过了,创建一个大于4G的自解压文件完成后,她弹出诊断信息提示框:
    xxx.exe:自解压文件太大,Windows功能执行超过4GB的可执行文件。
      

  10.   

    哟,写错了一个字,应该是"不能执行".结贴,散分,特别鸣谢:
    “ ahao
      (天·狼·星)”
      

  11.   

    补充:用WinRar打了一个大于4G的自解压包,在64位Windows下也不过运行
      

  12.   

    winrar有没有64位版本的?或者能生成64位的自解压exe的呢?