- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to use the function ippiFilterBoxBorder and i keep getting a compiler error of
Error 4 error : identifier "y8_ippiFilterBoxBorder_16u_C1R" is undefined
Error 3 error : identifier "y8_ippiFilterBoxBorderGetBufferSize" is undefined
If i change the FilterBoxBorder function to FilterBox (which is deprecated) everything compiles and runs with no issue.
I am using the latest c++ Intel compiler 15.0.2.179 on windows
Any idea what am i doing wrong?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The investigation is simple:
- ipp.h should include ippi.h,
- ippi.h should have the declaration:
IPPAPI (IppStatus, ippiFilterBoxBorderGetBufferSize,(IppiSize roiSize, IppiSize maskSize, IppDataType dataType, int numChannels, int* pBufferSize))
If something wrong in nested file includes, or, you have previous IPP version (I don't remember when BoxBorder functions appeared in IPP), the requested function will be non-declared, so "undefined".
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi !
It mustn't be so.
"y8_ippiFilterBoxBorder*" along with other CPU-clones "<cpu_letter>_ippiFilterBoxBorder*" functions are in "ippimt.lib" in $(IPPROOT)/lib/<ia32 | intel64> folder.
By the way, what is the diagnostic "Error 4", "Error 3" ? I haven't seen this before. Usually, there are linker errors of this kind.
Could you tell how do you include IPP header files ? Or, you use CPU-specific include files from $(IPPROOT)/tools/<cpu_arch>/staticlib directory ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the quick reply.
I think the number next to the compiler error is just the index of the error
As for the include i have the following 2 lines in this order for the include directories.
$(ICInstallDir)ipp\include\
$(ICInstallDir)ipp\tools\intel64\staticlib
I am including ipp.h
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you don't specify explicitly
#include "ipp_y8.h"
the inclusion of only "ipp.h" must not bring this problem, independent of include directories order.
Only in ipp_y8.h there is a redefinition, for example,
#define ippiFilterBorderGetSize y8_ippiFilterBorderGetSize
That is, instead of pure "ippiFilterBorderGetSize" the compiler, after preprocessing, looks for declaration of "y8_ippiFilterBorderGetSize".
I could suppose the following lines to reproduce this diagnostics:
#include "ipp_y8.h" void foo() { ippiFilterBoxBorderGetBufferSize(); }
This means, the redefinition exists, but declaration, which is in regular "ipp.h". I have "error C3861: 'y8_ippiFilterBoxBorderGetBufferSize': identifier not found" with this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I tried both including the ipp_y8.h and only ipp.h
The previous errors were with ipp_y8.h and i get a similar error with only ipp.h
error : identifier "ippiFilterBoxBorderGetBufferSize" is undefined
There is something else which is wrong there.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The investigation is simple:
- ipp.h should include ippi.h,
- ippi.h should have the declaration:
IPPAPI (IppStatus, ippiFilterBoxBorderGetBufferSize,(IppiSize roiSize, IppiSize maskSize, IppDataType dataType, int numChannels, int* pBufferSize))
If something wrong in nested file includes, or, you have previous IPP version (I don't remember when BoxBorder functions appeared in IPP), the requested function will be non-declared, so "undefined".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. You were correct.
The issue was with a previous version of IPP i had installed.
In the options it said to use latest for compiler 15 which is what i am using but i guess somewhere it got messed up and was using a previous version
Anyway its now resolved. Thanks
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page