高手请进(50分)

  • 主题发起人 主题发起人 huddle
  • 开始时间 开始时间
H

huddle

Unregistered / Unconfirmed
GUEST, unregistred user!
同样的delphi原代码在win98与win2000下编译出的执行文件是否相同
如果不同能否说说有什么区别
请说出些理由来支持你的理论,谢谢
没什么分了,只有这么多了
 
我认为应该不同,但是我没有测试过
为什么不一样呢:
因为Win98和Win2000的实现机制不一样,如:Delphi生成程序的时候肯定调用了很多Windows
API,但是Win98和Win2000下很多的实现肯定不一样
 
那在win2k下编译出的执行文件,放在win98下运行会有问题吗
 
不同,主要是字符集的问题。98下编译的可到NT下正常运行。
 
这个经常要重新编译,
但这个不一定
 
我实在2000下编译的,在98下运行的也很多,还没有碰到什么问题
 
同意c2008的问题,2000编译过的98下未可知问题很多的
 
这个问题是这样的,在大多数场合,Delphi生成的程序代码其实是一样的,
但操作系统装载它的机制是不同的。对于Windows NT/2000/XP,每个Win32进程都具有
自己独立的4GB地址空间(包含了2GB/1GB系统地址空间);而在Win 9X/Me下,所有进程
共享同样的4GB地址空间。操作系统在装载程序映像时会区分它们,而对于编译程序而言,
这种区分没有必要。既然所有跳转地址都是进程内部的(即程序代码所引用的地址都是
相对而不是绝对的,Object Pascal的absolute关键字最好不要用),编译器对进程调度
的影响已经降低到接近最小限度(之所以说接近是因为Windows操作系统不像Linux那样
是严格遵循位置无关代码规范的)。

如果您的程序确实调用了某些只在Windows NT/2000/XP中实现的函数,例如那些具有
安全描述符参数的内核对象创建函数,则编译出来的程序在Windws 9X/Me上似乎有所差别,
但这种差别其实与您的程序无关,而只与操作系统有关。
 
多人接受答案了。
 
后退
顶部