【发布时间】:2022-01-27 10:13:15
【问题描述】:
Shapelib 是一个最初用 C 语言编写的库,它提供了编写用于读取、写入和更新 ESRI Shapefile 的简单程序的能力。
我设法在https://github.com/OSGeo/shapelib 的基础上为 32 位和 64 位编译 shapelib.dll,然后我想在 ShapeFileII.pas(可在该 repo 中获得)的帮助下测试它是否有效。
我使用的是 Delphi 10.3。我从 Win32 开始,我编写了一个简单的程序,它打开 .shp 文件并读取几何类型和坐标。一切都按照我的意愿进行。
然后我添加了Win64平台并想对其进行测试。不幸的是,程序在 Win64 上无法正常运行。我只能读取几何类型,坐标等其他信息大多为空。
有人尝试使用 shapelib 库吗? 你能给我一个提示吗?也许 Win 32/64 数据类型之间存在一些区别?
感谢任何形式的帮助。
更新
更准确地说,我添加了涵盖 Win32 和 Win64 上相同测试对象的屏幕截图。在 Win32 上运行给了我想要的值——我需要特别是 nVertices 和 padfX、padfY、padfZ。在 Win64 上运行会给我错误的 nVertices (0) 值和奇怪的单线位移(Win32 中的 padfX 现在是 Win64 中的 padfY)。
【问题讨论】:
-
Win 32/64 数据类型之间可能有一些区别? 是的,当然有,但也有两种类型大小相同的类型。您需要进行一些调试并检查究竟是什么失败了。然后将其添加到您的问题中。
-
我们不能没有细节,minimal reproducible example