gpt4 book ai didi

windows - Qt 应用程序从 Fortran 调用 Dll

转载 作者:可可西里 更新时间:2023-11-01 10:06:29 30 4
gpt4 key购买 nike

这是我在 Qt Application(Qt4\Qt5) 从 Fortran(CVF\IVF) 调用 Dll 时遇到的问题。

Qt4+Dll(CVF)+WinXp

  1. 无论是在 QtCreator 中还是单独运行时,它都在我的 PC 上运行良好。
  2. 不能在其他系统(xp 或 win7/8)下工作
  3. 错误是“dll 未加载”(.isLoaded() 错误消息)

然后我的 PC 坏了,换了一个新的,并通过 IVF 迁移到 Qt5。但问题依旧:

Qt5+Dll(IVF with complier_platform win32)+Win8

  1. 无论是在 QtCreator 中还是单独使用,它都在我的 PC 上运行良好
  2. 不能在其他系统(xp 或 win7/8)下工作
  3. 错误是“dll 未加载”(.isLoaded() 错误消息)

好吧,在各种 PC 上尝试之后:

  1. 我想这不是平台问题(32 位或 64 位)
  2. 我确定调用时dll路径是正确的

Qt调用代码是

 if(stlDll.load()){
myfun fun1 = (myfun)stlDll.resolve("STLDLL");
if ( fun1 ){
fun1(fileName_For90);
}
}
else
QMessageBox::information(NULL, "File Missing",tr("dll not loaded, the Directory is ")+dllPath, QMessageBox::Ok);

错误始终是“dll not loaded”,但是这是非常正确的 dllPath,我可以在其中找到带有眼球的 dll,但 Qt 应用程序不能。

Fortran dll编译代码为:

!DEC$ ATTRIBUTES DLLEXPORT,ALIAS::stlDLL

最佳答案

通常,使用英特尔 Fortran 编译的 DLL 动态链接到英特尔 Fortran(和底层 Microsoft C++)运行时 DLL。您的 Fortran DLL 是否以这种方式编译和链接?

如果是这样,您需要在目标机器上安装英特尔 Fortran 运行时 DLL(以及底层 Microsoft C++ 运行时 DLL)。

您可以从英特尔网站获取英特尔 Fortran 运行时 DLL 的安装包,其方式与您获取编译​​器下载的方式相同(或参见 here)。您可以通过搜索 Microsoft 网站获取 Microsoft C++ 运行时库的安装包(它们是特定于 Visual Studio 版本和服务包的)。或者,运行时的合并模块和安装 exe 可能已作为 Intel Fortran 和 Visual Studio 安装的一部分安装在您的机器上。

关于windows - Qt 应用程序从 Fortran 调用 Dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026366/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com