为什么同样的程序WIN2000下编译,WIN98下不能运行,而WIN98编译就行?(100分)

  • 主题发起人 主题发起人 zhtx
  • 开始时间 开始时间
Z

zhtx

Unregistered / Unconfirmed
GUEST, unregistred user!
我编的程序在WIN2000下编译后,WIN2000下可以运行,而WIN98一运行则出现内存不足的错误,
并中止运行,而该程序放在WIN98下编译后(同样的编译参数),在WIN98下就可以正常运行,在
WIN2000下也可以运行,难道编译器在编译的时候还自动区分WIN2000和WIN98吗?还是另有
原因?真是奇怪,请大家发表高见,非常感谢.
注:1.我用的DELPHI 5.0,程序中没有直接调用任何外部DLL
2.原来编的程序WIN2000编译后在WIN98下是可以运行的,但加了个控件就不行了,
去掉控件则可以运行,估计应该是此控件作怪,但为什么WIN98编译就可以?难道有
专门的WIN98编译指令吗?
 
我路过学习,我帮你UP。因为我也有类似的问题。
 
当然区分了,因为一些api函数不一样,有的可以就是没用到不一样的api函数
 
看看你这个控件中的有关函数,应该是这些函数在作怪。
 
请问一般是哪些函数?
为什么在WIN98下编译后运行正常?
是否存在什么编译开关,指明是在WIN98下运行?
 
就在WIN98下编译吧,因为操作系统一般向下兼容,向上很难说的
 
可编译器是同一个啊.
 
实际上大部分在WIN2000编译的程序在WIN98下能正常运行的,有些确实不行,问题是我们不太清楚哪些控件
使用了实质内容不一样的api函数(在W2K和W98中),而这些在编译时需要操作系统提供资源的。(个人见解[:D])
 
typedef struct _RASENTRYNAME {
DWORD dwSize;
TCHAR szEntryName[RAS_MaxEntryName + 1];
#if (WINVER >= 0x500)
DWORD dwFlags;
TCHAR szPhonebookPath[MAX_PATH + 1];
#endif
} RASENTRYNAME;
这是ras调用中用到的一个结构,我从msdn中copy的,看到了吧中间有个
版本的判断
 
谢谢各位的帮助,看来smallbs,wuling朋友说的有道理,
我最后只好将新增的控件去掉,自己写一个,问题搞定.
 
后退
顶部