Legacy IPP headers do not compile with 2018 Update 3 in Visual Studio

Legacy IPP headers do not compile with 2018 Update 3 in Visual Studio

Compilation c++ code with IPP legacy headers gives  the following errors after updating to Parallel Studio XE 2018 Update 3.

An example code could contain just:

#include <ippi90legacy.h>

Severity    Code    Description    Project    File    Line    Suppression State
Error    C2146    syntax error: missing ';' before identifier 'legacy90ippiInit'    ipp_legacy_err    c:\program files (x86)\intelswtools\compilers_and_libraries_2018.3.210\windows\ipp\include\ippi90legacy.h    58    
Error    C4430    missing type specifier - int assumed. Note: C++ does not support default-int    ipp_legacy_err    c:\program files (x86)\intelswtools\compilers_and_libraries_2018.3.210\windows\ipp\include\ippi90legacy.h    58    
Error    C2086    'IppStatus __STDCALL': redefinition    ipp_legacy_err    c:\program files (x86)\intelswtools\compilers_and_libraries_2018.3.210\windows\ipp\include\ippi90legacy.h    74    

 

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi,  
Thanks for the report, and we are checking this code. 

regards,
Chao

Hi. After last Visual Studio 2017 update IPP installing vithout integration vith VS.

Regards,

Gennadiy L.

Hi,
I am trying to run an empty hello world code (IPP 2018), but it does not compile on VS 2017 or QT Creator.

Code is as follows:

#include "ipps90legacy.h"
 
Del::Del()
{
    ippInit(); // Initialize Intel IPP dispatcher
}

 

Come up with 152 errors saying things like:

syntax error: missing ';' before identifier 'legacy90ippsInit'
'IppStatus __STDCALL': redefinition

...
 

Is there any way to run legacy libs with IPP 2018, MSVC 2017 64bit? Or any alternative to compile old code written with earlier versions ( <= IPP 8) with IPP 2018 ? Or where can I find earlier versions of IPP?

Thanks, regards

Cengiz

 

 

 

 

Hi,
I am trying to run an empty hello world code (IPP 2018), but it does not compile on VS 2017 or QT Creator.

Code is as follows:

#include "ipps90legacy.h"
 
Del::Del()
{
    ippInit(); // Initialize Intel IPP dispatcher
}

 

Come up with 152 errors saying things like:

syntax error: missing ';' before identifier 'legacy90ippsInit'
'IppStatus __STDCALL': redefinition

...
 

Is there any way to run legacy libs with IPP 2018, MSVC 2017 64bit? Or any alternative to compile old code written with earlier versions ( <= IPP 8) with IPP 2018 ? Or where can I find earlier versions of IPP?

Thanks, regards

Cengiz

Attachments: 

AttachmentSize
Downloadimage/png error.png39.27 KB

Hi Gengiz,

I'm sorry to ignore your question so long time. Yes we changed IPP header files in IPP 2018 release to be compliant with C language standard. This is a simple workaround:

add only 3 lines of code:

#if !defined( __STDCALL )
#define __STDCALL IPP_STDCALL 
#endif

these lines can be added either before any "legacy" header declaration, or embedded into ippdefs90legacy.h after line #35:

#ifndef __IPPDEFS_90_LEGACY_H__
#define __IPPDEFS_90_LEGACY_H__

#include "ippbase.h"
#include "ipptypes.h"
#if !defined( __STDCALL )
#define __STDCALL IPP_STDCALL 
#endif

Pavel

Leave a Comment

Please sign in to add a comment. Not a member? Join today