Shader does not seem to work

I am using OpenFrameworks for this project. I am reading a texture from the ofApp.cpp, and binding is into the “src”. Then i will do some styling and chromatic aberration styling, found here. Finally, I output on the “dst” object. Howver, there is an error using the texture() function. The console logs :

[ error ] ofShader: setupShaderFromSource(): GL_COMPUTE_SHADER shader failed to compile
[ error ] ofShader: GL_COMPUTE_SHADER shader reports:
0(4) : error C1315: can't apply layout(rgba8) to non-image
0(13) : error C1115: unable to find compatible overloaded function "imageLoad(sampler2D, ivec2)"

[ error ] ofShader: GL_COMPUTE_SHADER, offending line 4 :
            2
            3
            4   layout(rgba8, binding = 0) uniform sampler2D src;
            5   layout(rgba8, binding = 1) uniform writeonly image2D dst;
            6   layout(local_size_x = 32, local_size_y = 32, local_size_z = 1) in;

[ error ] ofShader: checkProgramLinkStatus(): program failed to link
[ error ] ofShader: ofShader: program reports:
Compute info
------------
0(4) : error C1315: can't apply layout(rgba8) to non-image
0(13) : error C1115: unable to find compatible overloaded function "imageLoad(sampler2D, ivec2)"
(0) : error C2003: incompatible options for link

The file computeShader.cs:

#version 440


layout(rgba8, binding = 0) uniform sampler2D src;
layout(rgba8, binding = 1) uniform writeonly image2D dst;
layout(local_size_x = 32, local_size_y = 32, local_size_z = 1) in;

uniform vec3 iResolution;
uniform sampler2D texSam;

void main()
{
    vec4 dripsTex = imageLoad(src, ivec2(gl_GlobalInvocationID.xy));

    vec3 refractiveIndex = vec3(1.0, 1.015, 1.03);
    vec2 uv = dripsTex.xy / iResolution.xy;
    vec2 normalizedTexCoord = vec2(2.0, 2.0) * uv - vec2(1.0, 1.0);    // [0, 1] -> [-1, 1]
    vec3 texVec = vec3(normalizedTexCoord, 1.0);
    vec3 normalVec = vec3(0.0, 0.0, -1.0);
    vec3 redRefractionVec = refract(texVec, normalVec, refractiveIndex.r);
    vec3 greenRefractionVec = refract(texVec, normalVec, refractiveIndex.g);
    vec3 blueRefractionVec = refract(texVec, normalVec, refractiveIndex.b);
    vec2 redTexCoord = ((redRefractionVec / redRefractionVec.z).xy + vec2(1.0, 1.0)) / vec2(2.0, 2.0);
    vec2 greenTexCoord = ((greenRefractionVec / greenRefractionVec.z).xy + vec2(1.0, 1.0)) / vec2(2.0, 2.0);
    vec2 blueTexCoord = ((blueRefractionVec / blueRefractionVec.z).xy + vec2(1.0, 1.0)) / vec2(2.0, 2.0);

    float tempR = texture(texSam, redTexCoord).r;
    float tempG = texture(texSam, greenTexCoord).g;
    float tempB = texture(texSam, blueTexCoord).b;

    vec4 chroma;

    chroma.r = tempR;
    chroma.g = tempG;
    chroma.b = tempB;
    chroma.a = 1.0;

    imageStore(dst, ivec2(gl_GlobalInvocationID.xy), chroma);
}

The file ofApp.cpp:

void ofApp::setup(){
	ofSetCircleResolution(100);
	ofBackground(0);
	gui.setup();
	gui.add(brushSize.setup("size", 12, 5, 50));
	gui.add(brushSpread.setup("spread", 25, 1, 100));
	gui.add(brushSpill.setup("spill", 2.5, 0, 5));
	gui.add(worldWind.setup("wind", 0.2, -1, 1));
	gui.add(brushColor.setup("color", ofColor(255, 255, 255, 50), ofColor(0, 0), ofColor(255, 255)));

	// shader DISABLED
	fbo.allocate(ofGetWidth(), ofGetHeight(), GL_RGBA8);
	fbo.begin();
	ofClear(0, 0, 0);
	fbo.end();

	chr.allocate(ofGetWidth(), ofGetHeight(), GL_RGBA8);
	fbo.getTexture().bindAsImage(0, GL_READ_ONLY);
	shader.setupShaderFromFile(GL_COMPUTE_SHADER, "computeShader.cs");
	shader.linkProgram();
	chr.bindAsImage(1, GL_WRITE_ONLY);
}

void ofApp::draw(){
	fbo.begin();
	ofSetBackgroundAuto(false);
	for (int i = 0; i < Drips.size(); i++) {
		Drips[i].draw();
	}
	fbo.end();

	// shader DISABLED
	shader.begin();
	shader.dispatchCompute(ofGetWidth() / 32, ofGetHeight() / 32, 1);
	shader.end();
	chr.draw(0, 0);

	gui.draw();
}

What should I do? Is the shader configured correctly?

Have you tried ofDisableArbTex()?
Or you can make fbo with GL_TEXTURE_2D for a glInternalFormat property.

sampler2D needs GL_TEXTURE_2D I guess.