Qt应用程序从Fortran调用DLL

时间:2013-11-17 02:12:42

标签: windows qt fortran

这是Qt应用程序(Qt4 \ Qt5)从Fortran调用Dll(CVF \ IVF)时遇到的问题。

的Qt4 + DLL(CVF)+ WinXp的

  1. 在QtCreator和独奏中,它在我的电脑中工作正常
  2. 不在其他人的工作(xp或win7 / 8)
  3. 错误是“dll not loaded”(。isLoaded()false message)
  4. 然后我的电脑死了,换了新电脑并用IVF移民到Qt5。 但问题仍然存在:

    Qt5 + Dll(带有complier_platform win32的IVF)+ Win8

    1. 在QtCreator和独立
    2. 中,它在我的电脑中工作正常
    3. 不在其他人的工作(xp或win7 / 8)
    4. 错误是“dll not loaded”(。isLoaded()false message)
    5. 好吧,在从各种PC上试用它们之后:

      1. 我认为这不是平台问题(32位或64位)
      2. 我确定调用
      3. 时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 Applicaiton不能。

        Fortran DLL编译代码为:

        !DEC$ ATTRIBUTES DLLEXPORT,ALIAS::stlDLL
        

1 个答案:

答案 0 :(得分:3)

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

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

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