Qt应用程序从Fortran调用DLL

这里是我从Qt应用程序(Qt4 \ Qt5)调用Fortran(CVF \ IVF)中的Dll的问题。

QT4 + DLL(CVF)+ WinXp的

  1. 它在QtCreator中都可以正常工作,也可以单独使用。
  2. 不工作在其他的(XP或WIN7 / 8)
  3. 错误是“DLL未加载”(.isLoaded()虚假消息)

然后我的个人电脑死了,得到了新的,移植到Qt5与体外受精。 但仍然是这个问题:

Qt5 + Dll(IVF与complier_platform win32)+ Win8

  1. 它在QtCreator中都可以正常工作,也可以单独使用
  2. 不工作在其他的(XP或WIN7 / 8)
  3. 错误是“DLL未加载”(.isLoaded()虚假消息)

那么,从各种个人电脑尝试他们之后:

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

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); 

错误总是“ 没有加载 ”,但是这是非常正确的dllPath,我可以findDLL的眼球,但Qt Applicaiton不能。

Fortran的dll编译代码是:

 !DEC$ ATTRIBUTES DLLEXPORT,ALIAS::stlDLL 

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

如果是这样,则需要在目标计算机上安装英特尔Fortran运行时DLL(以及基础Microsoft C ++运行时DLL)。

您可以从获得英特尔网站的英特尔Fortran运行时DLL的安装软件包获取下载编译器(或在此处查看 )的相同方式。 您可以通过搜索Microsoft网站(它们是Visual Studio版本和特定的Service Pack)来获取Microsoft C ++运行时库的安装包。 另外,作为英特尔Fortran和Visual Studio安装的一部分,合并模块和运行时安装exe可能已经安装在您的机器上。