如何阻止 GLScene GLSceneViewer 组件崩溃 Delphi 10.3 IDE?

How to stop GLScene GLSceneViewer component crashing Delphi 10.3 IDE?

我正在将现有的 GLScene 应用程序更新到 Delphi 10.3。我已经安装了最新的 GLScene(来自 https://sourceforge.net/projects/glscene/),但是 TGLSceneViewer 组件导致错误。

即使在一个新项目中,当我将 TGLSceneViewer 拖放到表单上时,我也会收到 Loadlibrary failed with error 126;

按 'OK' 和 Delphi 崩溃返回 Windows 桌面;它会在没有任何对话或错误的情况下杀死 IDE。 (可以看到,已经放置的TGLScene组件GLScene1没有报错。)

我已使用 ProcessMonitor 尝试找出问题所在(根据对 LoadLibrary 126 错误的响应);

因此似乎缺少错误 'd.DLL'。那一定是一个无效的 dll 名称所以是否存在安装问题?

有人遇到过这个问题吗?谢谢!

更新:

所以我研究了 GLScene 源代码,试图找到可能与 'd.DLL'.

相关的参考资料

在下面的屏幕截图中('Messages' 部分)在 CUDA_Runtime.pas 和 CUDA.FourierTransform.pas。有可能这些可以创建名称 'd.DLL' 除了 'DLL' 在代码中没有大写?!我只是在这里四处寻找解决方案。

同样有趣的是,文件 'Imports.Newton.pas' 引用了四个未包含在安装外部文件夹中的 dll 文件; newton32d.dll、newton32s.dll、newton64d.dll 和 newton64s.dll

同样,我不知道这是否与 TGLSceneViewer 在设计模式下成功加载有关。

再次感谢您的帮助。

您的系统似乎没有正确安装 GLScene。

根据您似乎缺少必需的动态库这一事实,我猜您已经跳过了 2. 步骤 Instalation instructions for GLSCeene

您应该始终阅读随附的文档。当您将应用程序分发给最终用户时,这一点尤为重要,因为文档中包含有关依赖项的详细信息,这些依赖项需要随您的应用程序一起提供才能正常运行。

所以在多次尝试确定 'd.DLL' 是什么之后,我将其缩小到 'PhysXwrap32.dll' 因为通过将其重命名为 'd.dll' 我得到了一个不同的(访问冲突)错误,即事情有所进展!事实上,'earth.exe' 演示程序 运行 在将 d.dll 放入 exe 文件夹并忽略启动时的访问冲突错误后,在某种程度上(无纹理)。

无论如何,它显然是一团糟所以我尝试了一些其他的 GLScene 安装。在 Delphi 10.3 IDE 中完全安装了所有版本,并注册了软件包和可用的组件,但在将 TGLSceneViewer 拖放到表单上时,我仍然收到 Loadlibrary 错误 126。

最终我找到并安装了 'GLScene_v1.8_for_RX_10.3_Rio.7z' 并且终于没有得到那个 126 错误!我得到了另一个错误,Loadlibrary error 87。这通常与图形驱动程序问题有关。因此,根据各种帖子,我禁用了板载 Intel 630 显卡并确保 AMD 驱动程序是最新的。

重启后终于可以使用TGLSceneViewer了!

所以我安装了 GLScene v1.8 并在 Delphi 10.3 上工作。也许显卡冲突也与 GLScene v2 的问题有关,但它显示了不同的错误(Loadlibrary 126 而不是 87)。有空我试试看,哈哈

感谢您的帮助和关注。