Delphi 与 Windows 2008 Server 64 位的兼容性
Posted
技术标签:
【中文标题】Delphi 与 Windows 2008 Server 64 位的兼容性【英文标题】:Delphi compatibility with Windows 2008 Server 64 bit 【发布时间】:2009-12-23 09:55:00 【问题描述】:我计划在 Vista 32 位开发人员中安装使用 RAD2010 编译的应用程序。环境,win 2008 server 64位。 我使用 Firebird 2.0(32 位)作为数据库服务器。
有什么问题吗?或者它应该运行没有任何问题?
【问题讨论】:
【参考方案1】:这个没问题。
如果你可以使用Firebird 2.1(可以使用64位服务器的版本)。
只需获取 fbclient.dll(32 位版本)
【讨论】:
好的,我会先尝试升级 Firebird 服务器。我会在这里更新状态。时间。【参考方案2】:我看不出它为什么不能工作,32 位进程和服务在 x64 下运行良好。如果您的应用程序需要大量内存,您可以设置 LARGE_ADDRESS_AWARE 标志,使您的应用程序可以访问 4GB 的地址空间而不是 2GB。如果需要,您需要在 .dpr 文件中添加包含 $SetPEFlags $20
的行。
【讨论】:
好的。我会试一试。时间。【参考方案3】:我们遇到了 2 个与 Windows 2008 Server 相关的问题,但它们似乎不会对您造成太大影响:
Critical Sections 现在带有一个调试包,该包在发布时被缓存而不是释放。如果你创建了很多,你的应用程序的内存占用会更大。大量使用接口或线程时可能会发生。见is-the-memory-not-reclaimed-for-delphi-apps-running-on-windows-server-2008-sp1 和critical-sections-leaking-memory-on-vista-win2008。
使用 ADO 时,在传递 ConnectionString 时会出现内存泄漏(在 MS 堆栈中)。如果您关闭连接并通过 ConnectionString 大量打开它们,您最终会在一段时间后吃掉所有内存。
【讨论】:
我使用下面的代码(使用临界区)-> wishknew.multiply.com/journal/item/263/… 会不会导致 D2008 出现内存泄漏问题?【参考方案4】:唯一的问题是如果您的应用程序是需要加载到 64 位进程中的库。
示例: 外壳扩展 ISAPI 应用程序
【讨论】:
以上是关于Delphi 与 Windows 2008 Server 64 位的兼容性的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 2008/7/Vista 中使 Windows 服务蜂鸣
终于懂了:Delphi消息的Result完全是生造出来的,不是Windows消息自带的(Delphi对Windows编程体系的改造越大,学习收获就越大)