这是Qt应用程序(Qt4 \ Qt5)从Fortran调用Dll(CVF \ IVF)时遇到的问题。
的Qt4 + DLL(CVF)+ WinXp的
Qt5 + Dll(带有complier_platform win32的IVF)+ Win8
好吧,在从各种PC上试用它们之后:
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
答案 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可能已安装在您的计算机上。