我被要求用C++创建一个Delphi兼容的dll来进行简单的64位内存管理.
背景是Delphi中的系统需要分配大量内存,这些内存在32位可寻址空间之外.Delphi开发人员向我解释说,他无法使用他可用的Delphi命令分配内存.他说他可以保存64位地址,所以他只想调用我提供的函数来分配内存并向他返回64位指针.然后是另一个功能,以便以后释放内存.
现在,我只有VS 2008供我使用,所以首先我甚至不确定我是否可以创建一个Delphi兼容的dll.
任何Delphi专家都会帮助我.也许有一种方法可以实现他所需要的而无需重新发明轮子.其他开发人员必须在Delphi之前遇到过这个问题.
所有评论赞赏.
只有64位进程可以处理64位内存.64位进程只能加载64位dll,32位进程只能加载32位dll.Delphi的编译器只能生成32位二进制文件.
所以32位Delphi exe无法加载你的64位c ++ dll.它可以加载一个32位的c ++ dll,但那个dll将无法处理64位的内存空间.你有点坚持这个解决方案.
Delphi可以使用正确的编译器选项和Windows开关来解决3GB的内存问题.如果使用物理地址扩展,则32位进程可以访问更多内存.然后,它需要通过使用Address Windowing Extensions将存储器页面交换进出32位存储器.
Delphi指针是32位的.期.您的Delphi开发人员可能能够"存储"您想要返回给他的64位值,但他无法访问他们指向的内存,因此这非常徒劳.
以前,我写过: -
64位版本的Delphi位于 Codegear/Embarcadero的 "2009年中期" 路线图中.产品质量似乎(最后!)优先于完全击中船舶日期,所以不要屏住呼吸......
但是,2010年8月,Embarcadero 在这里发布了一个新的路线图.这没有给出具体的日期,但提到了一个64位的编译器预览版,其中包括2011年上半年的预计可用性.
您可以看看Free Pascal,因为它包含64位版本,并且主要是Delphi兼容语法.