You are using either wrong CIKernel type or kernel function input type.
CIColorKernel accepts only sample_t1 (which can be treated as a single pixel colorl) while CIKernel accepts zero or more input images each input image is represented by a parameter of type sampler.
So typical CIColorKernel will look like this:
#include <CoreImage/CoreImage.h>
extern "C" {
namespace coreimage {
float4 do_nothing(sample_t s) {
return s;
}
}
}
While CIKernel will work with this code:
extern "C" {
namespace coreimage {
float4 do_nothing(sampler src) { // It can have multiple samplers, vectors, floats or may not have parameters at all
return src.sample(src.coord());
}
}
}