il_jp2.cpp:353:2: error: invalid conversion
A full featured cross-platform image library
                
                Brought to you by:
                
                    doomwiz
                    
                
            
            
        
        
        
    Compile version 1.8.0 with jasper-2.0.23 fails with;
[ 28%] Building CXX object src-IL/CMakeFiles/IL.dir/src/il_internal.cpp.o
[ 29%] Building CXX object src-IL/CMakeFiles/IL.dir/src/il_io.cpp.o
[ 30%] Building CXX object src-IL/CMakeFiles/IL.dir/src/il_iwi.cpp.o
[ 30%] Building CXX object src-IL/CMakeFiles/IL.dir/src/il_jp2.cpp.o
/usr/src/DevIL/DevIL/src-IL/src/il_jp2.cpp:353:2: error: invalid conversion from 'int (*)(jas_stream_obj_t*, char*, int)' {aka 'int (*)(void*, char*, int)'} to 'int (*)(jas_stream_obj_t*, char*, unsigned int)' {aka 'int (*)(void*, char*, unsigned int)'} [-fpermissive]
353 |  iJp2_file_read,
|  ^~~~~~~~~~~~~~
|  |
|  int (*)(jas_stream_obj_t*, char*, int) {aka int (*)(void*, char*, int)}
/usr/src/DevIL/DevIL/src-IL/src/il_jp2.cpp:354:2: error: invalid conversion from 'int (*)(jas_stream_obj_t*, char*, int)' {aka 'int (*)(void*, char*, int)'} to 'int (*)(jas_stream_obj_t*, const char*, unsigned int)' {aka 'int (*)(void*, const char*, unsigned int)'} [-fpermissive]
354 |  iJp2_file_write,
|  ^~~~~~~~~~~~~~~
|  |
|  int (*)(jas_stream_obj_t*, char*, int) {aka int (*)(void*, char*, int)}
make[2]: *** [src-IL/CMakeFiles/IL.dir/build.make:511: src-IL/CMakeFiles/IL.dir/src/il_jp2.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:155: src-IL/CMakeFiles/IL.dir/all] Error 2
make: *** [Makefile:149: all] Error 2
This works with jasper-version-4.2.4 on linux
fix for DevIL/DevIL/src-IL/src/il_jp2.cpp line 317 to 345
copy and past
static ssize_t iJp2_file_read(jas_stream_obj_t obj, char buf, size_t cnt)
{
obj;
return iread(buf, 1, cnt);
}
static ssize_t iJp2_file_write(jas_stream_obj_t obj, const char buf, size_t cnt)
{
obj;
return iwrite(buf, 1, cnt);
}
static long iJp2_file_seek(jas_stream_obj_t *obj, long offset, int origin)
{
obj;
// We could just pass origin to iseek, but this is probably more portable.
switch (origin)
{
case SEEK_SET:
return iseek(offset, IL_SEEK_SET);
case SEEK_CUR:
return iseek(offset, IL_SEEK_CUR);
case SEEK_END:
return iseek(offset, IL_SEEK_END);
}
return 0; // Failed
}
Last edit: allan 2025-03-12