Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

error LNK1104: libmmt.lib

Gilad_D_Intel
Employee
1,419 Views

h files and *.lib file from another developer.
I have built a C++/CLI project and I want to create a C# wrapper for two functions

I'm getting this error

    error LNK1104: cannot open file 'libmmt.lib'    

I understand the he is using Intel Compiler and I know he uses IPP functions.<Br>
from here:<br>
https://software.intel.com/en-us/articles/libraries-provided-by-intelr-c-compiler-for-windows-and-intel-parallel-composer

I understand that he also uses Multi-threaded 
static library (/MT) version of math library.

I have Intel parallel studio installed. can you please help me understand how to configure my C++/CLI project?

I have added 
$(ICPP_COMPILER15)compiler\lib\intel64 into Additional Library Directories inside Linker -> General and now I have many more errors:

    error LNK2019: unresolved external symbol ippsSum_32f referenced in function ia_cp_robustMest

    error LNK2019: unresolved external symbol ippsSubC_32f referenced in function ia_cp_estimaSigmaRob

and so on...

 

0 Kudos
8 Replies
JenniferJ
Moderator
1,419 Views

The libmmt.lib issue is resolved by adding the directory, now this issue is more an IPP question.

Did you link the static ipp lib? at the same time I'll transfer you to the IPP forum.

Jennifer

0 Kudos
Gilad_D_Intel
Employee
1,419 Views

I have added the directories of IPP and the include files.

but still I have this problem

0 Kudos
Sergey_K_Intel
Employee
1,419 Views

Hi Gilad,

Could you show how you added IPP libs? You need to add

  • $(IPPROOT)\lib\intel64\ippsmt.lib,
  • (may be)  $(IPPROOT)\lib\intel64\ippvmmt.lib
  • $(IPPROOT)\lib\intel64\ippcoremt.lib

for linking to multi-CPU 64-bit IPP libraries. Include files don't matter here anymore, because you have link stage issues. I suppose you passed compilation stage correctly.

0 Kudos
Gilad_D_Intel
Employee
1,419 Views

since I have Intel parallel studio installed

this is my additional include directories:

$(ICPP_COMPILER15)ipp\include;$(ICPP_COMPILER15)compiler\include

and here is my additional library directories

$(ICPP_COMPILER15)compiler\lib\intel64;$(ICPP_COMPILER15)ipp\lib\intel64

 

0 Kudos
Sergey_K_Intel
Employee
1,419 Views

Gilad,

Besides library directories you need to provide a list of static libraries you want your app to link to. Otherwise, the linker doesn't know what libraries to search for function definitions.

Though, the compiler must put library inclusion directives in calling modules' object code like in the example from ipps.h file below:

#if !defined( _IPP_NO_DEFAULT_LIB )
  #if defined( _IPP_SEQUENTIAL_DYNAMIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ipps" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippcore" )
  #elif defined( _IPP_SEQUENTIAL_STATIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippsmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippvmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippcoremt" )
  #elif defined( _IPP_PARALLEL_DYNAMIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ipps" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippcore" )
  #elif defined( _IPP_PARALLEL_STATIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippsmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippvmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippcoremt" )
  #endif
#endif

in some cases (I don't know for what reason) these directives are not generated.

So, in this case you need to specify set of library names in Project/Linker/Input property.

P.S.: "mt" in the library names doesn't mean multi-threading. It's Windows-like manner of library naming. The IPPs ipp*mt.lib are single threaded static libraries, unless they come from "ipp/lib/<ia32|intel64>/threaded" directory, where they are multi-threaded.

0 Kudos
Gilad_D_Intel
Employee
1,419 Views

You mean inside Linker->input->additional dependencies?? I did give the name of the libs

0 Kudos
Chao_Y_Intel
Moderator
1,419 Views

Gilad, 

yes,  in the Linker->input->additional dependencies, you can add the IPP libraries. 

Thanks,
Chao

 

0 Kudos
Gilad_D_Intel
Employee
1,419 Views

my problem was resolved today, in intel parallel studio 2015 there is an addtional library which is not located in the lib IPP folder which is in Intel parallel studio 2013 installation. "threaded" and all of the file are found there.... problem solved. i couldn't find any documents about that. but I hope there is an upgrade manual somewhere that I missed.

 

0 Kudos
Reply