Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Error when linking with MKL 11.0 and VSC++ 2010

Bogdan_Cristea
Beginner
866 Views

I am trying to link my C++ program with MKL11, but the linking fails with the following error:

2>transforms.obj : error LNK2019: unresolved external symbol DftiComputeForward referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiCommitDescriptor referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiSetValue referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiCreateDescriptor referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiFreeDescriptor referenced in function "void __cdecl itpp::release_descriptor(struct mkl::DFTI_DESCRIPTOR *)" (?release_descriptor@itpp@@YAXPEAUDFTI_DESCRIPTOR@mkl@@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiComputeBackward referenced in function "public: void __cdecl itpp::Transform<struct itpp::IFFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UIFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol MKL_Domain_Set_Num_Threads referenced in function "void __cdecl itpp::init_fft_library<2>(void)" (??$init_fft_library@$01

These symbols are declared in <mkl_dfti.h> and <mkl_service.h> header files, but they are not defined in any mkl library (I am linking with

mkl_cdft_core_dll.lib
mkl_core_dll.lib
mkl_intel_thread_dll.lib

)

thanks

Bogdan

0 Kudos
7 Replies
Bogdan_Cristea
Beginner
866 Views

I have solved my problem by only linking to mkl_rt.lib

0 Kudos
Gennady_F_Intel
Moderator
866 Views

the problem can be solved by linking as an example with the following lib's:

  mkl_intel_c_dll.lib mkl_intel_thread_dll.lib  mkl_core_dll.lib

see the mkl linker adviser : http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor

0 Kudos
Bogdan_Cristea
Beginner
866 Views

I doesn't answer to my question as I am trying to use FFT libraries. Anyway, I have already used these libraries and still I get the error above. Why mkl_rt.lib is provided ? Are there any drawnbacks ? 

0 Kudos
SergeyKostrov
Valued Contributor II
866 Views
>>...2>transforms.obj : error LNK2019: unresolved external symbol DftiComputeForward... I just checked and DftiComputeForward is referenced in mkl_cdft_core.lib and mkl_cdft_core_dll.lib MKL libraries.
0 Kudos
Bogdan_Cristea
Beginner
866 Views

I have looked only in mkl_cdft_core.dll but DftiComputeForward does not exist, but instead there is DftiComputeForwardDM. Also, I have used for linking mkl_cdft_core_dll.lib, but I still get errors. On the other hand, DftiComputeForward does exist in mkl_rt.dll

0 Kudos
Dmitry_B_Intel
Employee
866 Views

Hi Bogdan,

DftiSomethingDM functions relate to cluster FFT (DM stands for Distributed Memory). Probably you want to use 'normal' FFT, that is FFT on a single computer, not using MPI. The normal functions are declared in mkl_dfti.h, and provided by mkl_intel_c.dll. Please follow the advice by Gennady.

Thanks
Dima

0 Kudos
Bogdan_Cristea
Beginner
866 Views

The only way I have found is to use mkl_rt.dll. mkl_intel_c.dll does not exist in MKL 11

0 Kudos
Reply