怎么样让公司网站,中国建筑网登录入口,asp网站后台管理系统模板,常用的网页制作软件有MATLAB R2023b配置Fortran编译器 引言1. 安装Visual Studio 20192. 安装Intel API20243. 配置xml文件文件4. 设置环境变量5. MATLAB编译Fortran 引言
当我们需要用到MATLAB编译Fortran代码后进行调用计算时#xff0c;整个配置流程较繁琐。下面以MATLAB R2023b为例#xff0… MATLAB R2023b配置Fortran编译器 引言1. 安装Visual Studio 20192. 安装Intel API20243. 配置xml文件文件4. 设置环境变量5. MATLAB编译Fortran 引言
当我们需要用到MATLAB编译Fortran代码后进行调用计算时整个配置流程较繁琐。下面以MATLAB R2023b为例介绍配置Fortran编译器的流程以及中间可能遇到的问题。 我的版本 MATLAB R2023b”https://mp.weixin.qq.com/s/KclU24GCUQj70j1s_cqE2g“ Visual Studio 2019”https://mp.weixin.qq.com/s/Pc5U7lBrhUq06MYj6hSJWw“或”https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes” w_BaseKit_p_2024.2.1.101_offline.exe”https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html“ w_BaseKit_p_2024.2.1.101_offline.exe”https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html“
1. 安装Visual Studio 2019
我尝试了使用Visual Studio 2022进行配置但是出现了在MATLAB中使用MEX -setup命令能够正常显示编译器但是在使用MEX编译Fortran代码时出现了“错误使用 mex ‘ifx’ 不是内部或外部命令,也不是可运行的程序 或批处理文件”的提示具体原因可能是”G:\Program Files (x86)\Intel\oneAPI\compiler\2024.2\bin“文件夹中的ifx.exe不能识别未找到解决办法。因此就选择卸载VS2022重新安装VS2019。
VS2019安装包在如下链接可以下载https://mp.weixin.qq.com/s/Pc5U7lBrhUq06MYj6hSJWw
但是在下载的过程中又出现了下载速度贼慢的问题。后来按照网上检索的一个修改hosts的办法亲测有效如果没有遇到这个问题可直接跳过进行第2步。 1.使用DNS查找工具网站”https://tool.chinaz.com/dns/?type1hostdownload.visualstudio.microsoft.comip“查询微软的下载网站的域名 download.visualstudio.microsoft.com 找到TTL最低的那个节点。 2.找到TTL值最小的那个节点复制IP地址,在我这里对应的最小IP就是 103.208.44.30。如下所示 3.以记事本形式打开”C:\Windows\System32\drivers\etc“文件夹下的hosts文件在hosts里加入 IP地址微软的下载网站的域名 这里可能需要另存后再复制粘贴进这个文件夹里。 3.打开cmd刷新dns然后在ping一下微软的下载地址查看hosts文件有没有生效。具体步骤如下 1在cmd中输入ipconfig /flushdns 刷新dns 2ping微软的下载地址在cmd中输入 ping download.visualstudio.microsoft.com 3若没有丢包且往返时间很小则说明我们的hosts文件生效。 经过上述操作VS2019的下载速度会非常快。 安装流程完全按照”https://mp.weixin.qq.com/s/Pc5U7lBrhUq06MYj6hSJWw“所提供的步骤来就行了。
2. 安装Intel API2024
先安装the Intel® oneAPI Base Toolkit”https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html“再安装the Intel® HPC Toolkit”https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html“安装步骤很简单修改安装路径其他默认即可。最后打开Visual Studio 2019看到Fortran一项即说明安装配置成果。
3. 配置xml文件文件
然后需要添加intel_fortran_24_vs2019.xml文件。由于我用的是Intel API2024visual studio 2019所以在我的MATLAB安装路径”G:\MATLAB R2023b\bin\win64\mexopts“下需要有intel_fortran_24_vs2019.xml文件这个文件matlab2023b是没有的。可将下面代码复制粘贴到记事本再重命名为”intel_fortran_24_vs2019.xml“即可
?xml version1.0 encodingUTF-8 ?
configNameIntel oneAPI 2024 for Fortran with Microsoft Visual Studio 2019ShortNameINTELF24MSVS2019ManufacturerIntelVersion24.0LanguageFORTRANPriorityXLocation$FORTRANROOT DetailsCompilerExecutable$COMPILERCompilerDefines$COMPDEFINESCompilerFlags$COMPFLAGSOptimizationFlags$OPTIMFLAGSDebugFlags$DEBUGFLAGSIncludeFlags$INCLUDELinkerExecutable$LINKERLinkerFlags$LINKFLAGSLinkerLibraries$LINKLIBSLinkerDebugFlags$LINKDEBUGFLAGSLinkerOptimizationFlags$LINKOPTIMFLAGSCommandLineShell$FORTRANROOT\env\vars.bat CommandLineShellArgintel64CompilerDefineFormatter/D%sLinkerLibrarySwitchFormatterlib%s.lib;%s.libLinkerPathFormatter/LIBPATH:%sLibrarySearchPath$$LIB;$$LIBPATH;$$PATH;$$INCLUDE;$MATLABROOT\extern\lib\$ARCH\microsoft/!-- Switch guide: http://msdn.microsoft.com/en-us/library/fwkeyyhe(vvs.71).aspx --varsCMDLINE100$COMPILER /c $COMPFLAGS $OPTIM $SRC /Fo$OBJCMDLINE200$LINKER $LINKFLAGS $LINKTYPE $LINKOPTIM $LINKEXPORTVER $OBJS $LINKLIBS /out:$EXECMDLINE300del $EXP $LIB $ILK
FORTRANROOT$ONE_API_ROOT/compiler/$ONE_API_VERSION
COMPILERifx.exe
COMPFLAGS/nologo /fpp /fixed /MD /fp:source /assume:bscc $INCLUDE $COMPDEFINES
COMPDEFINES/DMATLAB_MEX_FILE
MATLABMEX /DMATLAB_MEX_FILE
OPTIMFLAGS/O2 /DNDEBUG
INCLUDE-Iquot;$MATLABROOT\extern\includequot;
DEBUGFLAGS/Z7LINKERlink
LINKFLAGS /nologo /INCREMENTAL:NO
LINKTYPE/DLL
LINKEXPORT/EXPORT:MEXFUNCTION
LINKEXPORTVER/EXPORT:MEXFUNCTION /EXPORT:MEXFILEREQUIREDAPIVERSION
LINKLIBS/LIBPATH:quot;$MATLABROOT\extern\lib\$ARCH\microsoftquot; libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
LINKDEBUGFLAGS/debug /PDB:quot;$TEMPNAME$LDEXT.pdbquot;
LINKOPTIMFLAGSOBJEXT.obj
LDEXT.mexw64
SETENVset COMPILER$COMPILERset COMPFLAGS/c $COMPFLAGS $COMPDEFINES $MATLABMEXset OPTIMFLAGS$OPTIMFLAGSset DEBUGFLAGS$DEBUGFLAGSset LINKER$LINKERset LINKFLAGS$LINKFLAGS /export:%ENTRYPOINT% $LINKTYPE $LINKLIBS $LINKEXPORTset LINKDEBUGFLAGS/debug /PDB:quot;%OUTDIR%%MEX_NAME%$LDEXT.pdbquot;set NAME_OUTPUT/out:quot;%OUTDIR%%MEX_NAME%%MEX_EXT%quot;
/clientengineCMDLINE300if exist $ILK del $ILKLINKLIBS$LINKLIBS libeng.libLINKEXPORT/subsystem:consoleLINKEXPORTVER/subsystem:consoleLDEXT.exeLINKTYPEMATLABMEX//clientlocationFinderONE_API_ROOTenvVarExists nameONEAPI_ROOT //ONE_API_ROOTONE_API_VERSIONandenvVarExists nameONEAPI_ROOT /cmdReturns name echo off amp; (for /f %a IN (dir quot;$$\compiler\2024*quot; /b /ad /on) do (if exist quot;$$\compiler\%a\bin\ifx.exequot; set quot;oneapiVer%aquot;)) amp; (if defined oneapiVer call echo %oneapiVer%)//and/ONE_API_VERSIONVCROOTorandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot% //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot% //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot% //and/or/VCROOTSDKROOTorhklmExists pathSOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0 nameInstallationFolder /hkcuExists pathSOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0 nameInstallationFolder /hklmExists pathSOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0 nameInstallationFolder /hkcuExists pathSOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0 nameInstallationFolder //or/SDKROOTVSINSTALLDIRorandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value //and/or/VSINSTALLDIRVCINSTALLDIRorandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot%\VC\Tools\MSVC\%a //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot%\VC\Tools\MSVC\%a //andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value /cmdReturns nameset quot;vcroot$$quot;amp;for /f quot;delims quot; %a in (type quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txtquot;) do if exist quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exequot; call echo %vcroot%\VC\Tools\MSVC\%a //and/or/VCINSTALLDIRVCVARSALLDIRorandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value /fileExists name$$\VC\Auxiliary\Build\vcvarsall.bat /dirExists name$$//andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value /fileExists name$$\VC\Auxiliary\Build\vcvarsall.bat /dirExists name$$//andandenvVarExists nameProgramFiles(x86) /fileExists name$$\Microsoft Visual Studio\Installer\vswhere.exe /cmdReturns namequot;$$\\vswhere.exequot; -version quot;[16.0,17.0)quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value /fileExists name$$\VC\Auxiliary\Build\vcvarsall.bat /dirExists name$$//and/or/VCVARSALLDIRKITSROOTorhklmExists pathSOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hkcuExists pathSOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hklmExists pathSOFTWARE\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hkcuExists pathSOFTWARE\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 //or/KITSROOTSDKVERSIONandorhklmExists pathSOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hkcuExists pathSOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hklmExists pathSOFTWARE\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 /hkcuExists pathSOFTWARE\Microsoft\Windows Kits\Installed Roots nameKitsRoot10 //or!-- For each folder inside KITSROOT\include check for ucrt and if exists return that folder name --cmdReturns nameecho offamp;set quot;sdkversionquot;amp;(for /f %a IN (dir quot;$$\include\quot; /b /ad-h /on) do ( if exist quot;$$\include\%a\ucrt\quot; set quot;sdkversion%aquot; ))amp;call echo %sdkversion% //and/SDKVERSION/locationFinderenvPATH$FORTRANROOT\bin;$VCINSTALLDIR\bin\HostX64\x64\;$VCROOT\Common7\IDE\VC\vcpackages;$VCROOT\Common7\IDE;$VCROOT\Common7\Tools;$SDKROOT\Bin\$SDKVERSION\x64;$SDKROOT\Bin\$SDKVERSION\x86;$SDKROOT\Bin\x64;$SDKROOT\Bin\x86;INCLUDE$FORTRANROOT\include;$VCINSTALLDIR\include;$VCINSTALLDIR\atlmfc\include;$KITSROOT\include\$SDKVERSION\ucrt;$KITSROOT\include\$SDKVERSION\shared;$KITSROOT\include\$SDKVERSION\um;$KITSROOT\include\$SDKVERSION\winrt;$MATLABROOT\extern\includeLIB$FORTRANROOT\lib;$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64;$KITSROOT\Lib\$SDKVERSION\ucrt\x64;$KITSROOT\lib\$SDKVERSION\um\x64;$MATLABROOT\lib\$ARCHLIBPATH$FORTRANROOT\lib;$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64/
/config4. 设置环境变量
变量值是安装oneAPI地址
5. MATLAB编译Fortran
输入命令mex -setup FORTRAN 输入编译的Fortran代码mex ‘DC3D0wrapper.F’ 在文件夹中生成了一个后缀”.mexw64“的文件即表示编译成功