我刚读了How to determine if I’m running as a console app? (Delphi on Win32)并且评论解释说可能有多个版本,例如,System.IsConsole有不同的值 – 在EXE中为True,在DLL中为False(如果它是使用$APPTYPE CONSolE编译的).
但是,其他变量似乎是针对应用程序范围的值而设计的
MainInstance: LongWord; { Handle of the main(.EXE) HInstance }cpuCount: Integer; { Number of cpu Cores detected }
开发人员如何看待在应用程序级别分配哪些值,哪些变量是特定于模块的(因此在DLL和EXE中可以有不同的值)?
或者我是否误解了这些全局变量?例如,System.BeginThread的文档说它设置了全局变量System.IsMultiThread – 但它怎么可能是全局变量而System.IsConsole不是?
解决方法 除非您将DLL与RTL.bpl或用户定义的包含系统单元的“主”BPL链接,否则您的DLL将拥有自己的一组全局系统变量.它们在加载DLL时初始化. cpuCount不需要EXE来填充它. DLL通过向windows询问其值来填充它. DLL也有自己的IsMultiThread变量(除非你将你的DLL链接到RTL.bpl …).所以你的EXE可以有多个线程,DLL的IsMultiThread变量仍然是False. 总结以上是内存溢出为你收集整理的delphi – 使用DLL的应用程序中System.pas中的全局变量全部内容,希望文章能够帮你解决delphi – 使用DLL的应用程序中System.pas中的全局变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)