在Fortran MEX中使用Intel MKL

本文详细介绍了如何通过修改mexopts.bat文件来成功编译使用IntelMKL的FortranMEX文件,并提供了具体步骤及解决链接过程中出现的未解析外部符号错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要想成功编译使用Intel MKL的FortranMEX文件,需要修改mexopts.bat中的几个地方。以IVF11为例,需要修改的地方如下:

  1. setINCLUDE=%IFORT_COMPILER11%\Include;%IFORT_COMPILER11%\Include\IA32;%IFORT_COMPILER11%\mkl\Include;%IFORT_COMPILER11%\mkl\Include\IA32;%LINKERDIR%\VC\ATLMFC\INCLUDE;%LINKERDIR%\VC\INCLUDE;%WINSDKDIR%\include;%LINKERDIR%\SDK\v3.5\include;%INCLUDE%

  2. setLIB=%IFORT_COMPILER11%\Lib\IA32;%IFORT_COMPILER11%\mkl\ia32\lib;%LINKERDIR%\VC\ATLMFC\LIB;%LINKERDIR%\VC\LIB;%WINSDKDIR%\Lib;%LINKERDIR%\SDK\v3.5\lib;%MATLAB%\extern\lib\win32;%LIB%

  3. set COMPFLAGS=/fpp /Qprec"/I%MATLAB%/extern/include" -c -nologo -DMATLAB_MEX_FILE /MD/fp:source /assume:bscc /QxHost /Qmkl

上面红色部分是需要添加的。

如果Link过程中出现“无法解析的外部符号 _xxxxxx,该符号在函数 _xxxxx中被引用”之类的错误,是因为Linker没有找到合适的.lib文件,可如下处理:

set LINKFLAGS=/DLL /EXPORT:MEXFUNCTION/LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib/implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"/NOLOGO /INCREMENTAL:NO

rem Linkable MKL libs:mkl_blacs_dll.libmkl_blacs_intelmpi.lib mkl_blacs_mpich2.lib mkl_blas95.libmkl_cdft_core.lib mkl_cdft_core_dll.lib mkl_core.libmkl_core_dll.lib mkl_intel_c.lib mkl_intel_c_dll.libmkl_intel_s.lib mkl_intel_s_dll.lib mkl_intel_thread.libmkl_intel_thread_dll.lib mkl_lapack95.lib mkl_pgi_thread.libmkl_pgi_thread_dll.lib mkl_scalapack_core.libmkl_scalapack_core_dll.lib mkl_sequential.libmkl_sequential_dll.lib mkl_solver.libmkl_solver_sequential.lib

set LINKFLAGS =%LINKFLAGS% /LIBPATH:"%IFORT_COMPILER11%\mkl\ia32\lib"mkl_lapack95.libmkl_intel_c.lib

将上面黄颜色部分所示的某个.lib 文件添加到LINKFLAGS后面即可,如绿色部分所示。如果实在不知道该加哪个.lib,就全部加上。


出自:http://blog.sina.com.cn/s/blog_6e98932f0100mjqo.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值