1

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

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

在此处输入图像描述

按“确定”,Delphi 崩溃回到 Windows 桌面;它会在没有任何对话框或错误的情况下杀死 IDE。(如您所见,已放置的 TGLScene 组件 GLScene1 不会出错。)

我已经使用 ProcessMonitor 试图找到问题(按照对 LoadLibrary 126 错误的响应的指示);

在此处输入图像描述

所以错误似乎缺少“d.DLL”。那一定是一个无效的 dll 名称,所以有一些安装问题吗?

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

更新:

因此,我挖掘了 GLScene 源代码,试图找到可能与“d.DLL”相关的引用。

在下面的屏幕截图中(“消息”部分),在 CUDA_Runtime.pas 和 CUDA.FourierTransform.pas 中引用了构造的 dll 名称(CUDARTDLLNAMES[I] + '.dll' 和 CUFFTDLLNAMES[I] + '.dll')。有可能这些可以创建名称“d.DLL”,除了“DLL”在代码中没有大写?!我只是在这里寻找解决方案。

同样有趣的是,文件“Imports.Newton.pas”指的是安装外部文件夹中不包含的四个 dll 文件;newton32 d .dll、newton32 s .dll、newton64 d .dll 和 newton64 s .dll

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

在此处输入图像描述

再次感谢您的帮助。

4

2 回答 2

0

看来您没有在系统上正确安装 GLScene。

基于您似乎缺少必需的动态库这一事实,我猜您已经跳过了 2.安装 GLSCeene 说明的步骤

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

于 2021-07-07T00:22:18.153 回答
0

因此,经过大量尝试确定“d.DLL”是什么后,我将其缩小为“PhysXwrap32.dll”,因为通过将其重命名为“d.dll”,我得到了一个不同的(访问冲突)错误,即事情已经移动就一点!事实上,在将 d.dll 放入 exe 文件夹并忽略启动时的访问冲突错误后,“earth.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)。有空的时候我试试,哈哈。

感谢您的帮助和兴趣。

于 2021-07-09T10:55:32.890 回答