Also, I found I had to remove the 2 lines in distutils/system_info.py that mention pthread, mkl_lapack32, mkl_lapack64 (see attached patch) since libraries with such names don't seem to exist in the MKL for windows and were generating linking errors.
This obviously isn't the right thing to do, and I don't know enough to know how to do it properly
Here's a new patch that checks if sys.platform == 'win32' and does the appropriate thing. MKL on linux behaviour should be unaffected, but I don't have any way of testing that. I've also included an improved .numpy-site.cfg file. I've added a section on how to build with MKL and MSVC to http://www.scipy.org/Installing_SciPy/Windows Cheers, Martin Index: numpy/distutils/system_info.py =================================================================== --- numpy/distutils/system_info.py (revision 3721) +++ numpy/distutils/system_info.py (working copy) @@ -811,9 +811,12 @@ info = {} dict_append(info,**mkl) dict_append(info, - libraries = ['pthread'], define_macros=[('SCIPY_MKL_H',None)], - include_dirs = incl_dirs) + include_dirs=incl_dirs) + if sys.platform == 'win32': + pass # win32 has no pthread library + else: + dict_append(libraries=['pthread']) self.set_info(**info) class lapack_mkl_info(mkl_info): @@ -822,7 +825,10 @@ mkl = get_info('mkl') if not mkl: return - lapack_libs = self.get_libs('lapack_libs',['mkl_lapack32','mkl_lapack64']) + if sys.platform == 'win32': + lapack_libs = self.get_libs('lapack_libs', ['mkl_lapack']) # mkl_lapack : "LAPACK routines and drivers" + else: + lapack_libs = self.get_libs('lapack_libs', ['mkl_lapack32','mkl_lapack64']) info = {'libraries': lapack_libs} dict_append(info,**mkl) self.set_info(**info) # config file for building numpy on ia32 platform, # using Intel's Math Kernel Library for win32 # builds successfully with MSVC7.1 # replace C:\bin\Intel\MKL\9.0 with your Intel MKL install path [mkl] include_dirs = C:\bin\Intel\MKL\9.0\include library_dirs = C:\bin\Intel\MKL\9.0\ia32\lib mkl_libs = mkl_ia32, mkl_c_dll, libguide40 lapack_libs = mkl_lapack # mkl_c or mkl_c_dll? either seem to work: # mkl_c : "cdecl interface library" # mkl_c_dll : "cdecl interface library for dynamic library" # libguide or libguide40? either seem to work: # libguide.lib : "Static threading library" # libguide40.lib : "Interface library for dynamic threading library"