- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>Deconvolution.obj : error LNK2019: unresolved external symbol _ippiFFTInv_PackToR_32f_C1IR referenced in function "signed char __cdecl MyIppBasedCorrelation(float *,float *,float *,unsigned int,unsigned int,unsigned char *,int,struct FFT2DSpec_R_32f *)" (?MyIppBasedCorrelation@@YACPAM00IIPAEHPAUFFT2DSpec_R_32f@@@Z)
and many others linker error.
This I get when compiling 32 bits my own dll library. When compiling 64 bits everything goes well. The next strange thing is that when I use the same code building standalone application 32 adn 64 bits works both flawlesly. I checked compiler settings, paths hundred times and nearly ready to go to my shrink.
any ideas?
thanks
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I suspect there can be some preprocessor setting, that is wrong, but not sure about it. Anyway this thing drives me crazy, because I wanted to release my app last week. The worst thing is, that I know that IPP works great in my regular work - we use it every day, but my own installation sucks. This is a clear proof, that there is something wrong between my chair and my keyboard ;-)
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here are a couple of things to consider:
- Did you try to compile the application on a different computer?
- Did you try to compare your IPP installation withIPP installation on a different computer?
- How many IPPinstallations do you have on your computer?
- Did you check SET and PATH environment variables?
- Did you check a Visual Studio's options?
'Main Menu -> Tools -> Options -> Project and Solutions -> VC++ Directories -> Include Files & Library Files'
- Would you be able to create a simple reproducer of the link error LNK2019?
Best regards,
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>Deconvolution.obj : error LNK2019: unresolved external symbol _ippiFFTInv_PackToR_32f_C1IR referenced in function "signed char __cdecl MyIppBasedCorrelation(float *,float *,float *,unsigned int,unsigned int,unsigned char *,int,struct FFT2DSpec_R_32f *)" (?MyIppBasedCorrelation@@YACPAM00IIPAEHPAUFFT2DSpec_R_32f@@@Z)
Hi Filip,
In fact the name of this function in the library (mangled name) is "_ippiFFTInv_PackToR_32f_C1IR@16". This is how the function names stored in libraries.
Usually the absence of "@XX" suffix means, that corresponding function declaration (prototype) doesn't get MS "__stdcall" attribute. Look at the compilation stage warnings, try to find out where you missed correct function declaration.
Regards,
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I tried today link the solution on 2 different workstations (different installation of IPP), but got the same result. Linker error.
Sergey, thanks very much. In fact I tried to check ippi.lib file and I found out the same thing as you(I mean the suffix @xx is missing, but I'm not that familiar with compilers so I had no idea what does it mean). In this time I dont know how to tell VS 2005 compiler to use _stdcall atribubute for these functions. Will google it a little, and I'll hopefully solve it somehow.
regards
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you check Linker settings? This is a Linker error and it is not related to a "wrong" declaration of the
IPP function 'ippiFFTInv_PackToR_32f_C1IR'.
As you stated you managed to compile and linka 64-bit configuration. Then, for a 32-bitconfiguration
compilation was successful, but it fails to link IPP libraries.
A Linker error:
LNK2019: unresolved external symbol _ippiFFTInv_PackToR_32f_C1IR
means thatsome IPP library from Image Processing domain is not included for a32-bit configuration.
Best regards,
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[SergeyK] Agree.It looks like a"surprize" from Microsoft.Did you add that macroin a source file,
or in a project settings? You can add that macro for a32-bit configuration only in a
project settings for'Preprocessor '
and 32 bit works, but 64 bit doesn't. One more day and I'll forget this mess and will return to my own libraries ;-)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I use _WIN32WCE macro for Embedded platforms andI couldn't imaging that it couldaffect calling conversions in IPP.
So, is that a bug or a feature of IPP? What do you think?
Best regards,
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
regards
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you all
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Add some relatedinformation from Intel Compiler documentation,
Naming Conventions inC/C++
C | cdecl (default) | name (Linux OS) _name (Windows OS) _name (Mac OS X) | Mixed case preserved |
C (Windows OS only) | __stdcall | _name@n | Mixed case preserved |
C++ | Default | name@@decoration (Linux OS) _name@@decoration (Windows OS) __decorationnamedecoration (Mac OS X) | Mixed case preserved |
In the preceding table:
The leading underscore (such as _name) is used on Windows operating systems based on IA-32 architecture only.
@n represents the stack space, in decimal notation, occupied by parameters on Windows operating systems based on IA-32 architecture only.
For example, assume a function is declared in C as:
extern int __stdcall Sum_Up( int a, int b, int c );
Each integer occupies 4 bytes, so the symbol name placed in the .OBJ file on systems based on IA-32 architecture is:
_Sum_Up@12
On systems based on Intel 64 architecture, the symbol name placed in the .OBJ file is:
Sum_Up
Thanks
Ying H
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
1)setup size increase +70%
2)linking problems (4 days)
3)AMD processor issues
4)Ipp FT problem
.... and the overal speedup is about 20%.
in other words, I quit, IPP means for me more problems than benefits.
thank you again and peace :-)
Filip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm really sorry to hear that. What are you going to use instead?
Best regards,
Sergey


- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page