Linking Android static libraries fails

Hi everyone. I’m trying to build a project for Android that involves the use of OpenCV libraries. I added the header files and the libs on a directory called OpenCV under Engine/Source/ThirdParty and I have created the OpenCV.Build.cs file as following:

string SdkBase = UEBuildConfiguration.UEThirdPartySourceDirectory + “OpenCV”;

if (!Directory.Exists(SdkBase))
{
string Err = string.Format(“OpenCV SDK not found in {0}”, SdkBase);
System.Console.WriteLine(Err);
throw new BuildException(Err);
}

        if (Target.Platform == UnrealTargetPlatform.Android)
        {

            PublicIncludePaths.Add(SdkBase + "/Android/sdk/native/jni/include/Public");
            string LibraryPath = SdkBase + "/Android/sdk/native/libs";

            PublicLibraryPaths.Add(LibraryPath + "/armeabi-v7a");
            PublicAdditionalLibraries.Add("libopencv_calib3d.a");
            PublicAdditionalLibraries.Add("libopencv_core.a");
            PublicAdditionalLibraries.Add("libopencv_features2d.a");
            PublicAdditionalLibraries.Add("libopencv_flann.a");
            PublicAdditionalLibraries.Add("libopencv_highgui.a");
            PublicAdditionalLibraries.Add("libopencv_imgcodecs.a");
            PublicAdditionalLibraries.Add("libopencv_imgproc.a");
            PublicAdditionalLibraries.Add("libopencv_ml.a");
            PublicAdditionalLibraries.Add("libopencv_objdetect.a");
            PublicAdditionalLibraries.Add("libopencv_photo.a");
            PublicAdditionalLibraries.Add("libopencv_shape.a");
            PublicAdditionalLibraries.Add("libopencv_stiching.a");
            PublicAdditionalLibraries.Add("libopencv_superres.a");
            PublicAdditionalLibraries.Add("libopencv_video.a");
            PublicAdditionalLibraries.Add("libopencv_videoio.a");
            PublicAdditionalLibraries.Add("libopencv_videostab.a");

            PublicLibraryPaths.Add(LibraryPath + "/arm64-v8a");
            PublicAdditionalLibraries.Add("libopencv_calib3d.a");
            PublicAdditionalLibraries.Add("libopencv_core.a");
            PublicAdditionalLibraries.Add("libopencv_features2d.a");
            PublicAdditionalLibraries.Add("libopencv_flann.a");
            PublicAdditionalLibraries.Add("libopencv_highgui.a");
            PublicAdditionalLibraries.Add("libopencv_imgcodecs.a");
            PublicAdditionalLibraries.Add("libopencv_imgproc.a");
            PublicAdditionalLibraries.Add("libopencv_ml.a");
            PublicAdditionalLibraries.Add("libopencv_objdetect.a");
            PublicAdditionalLibraries.Add("libopencv_photo.a");
            PublicAdditionalLibraries.Add("libopencv_shape.a");
            PublicAdditionalLibraries.Add("libopencv_stiching.a");
            PublicAdditionalLibraries.Add("libopencv_superres.a");
            PublicAdditionalLibraries.Add("libopencv_video.a");
            PublicAdditionalLibraries.Add("libopencv_videoio.a");
            PublicAdditionalLibraries.Add("libopencv_videostab.a");


        //Add the runtime dependency. ie: RuntimeDependencies.Add(new RuntimeDependency(OpenVRBinariesDir + "libopenvr_api.dylib"));
        RuntimeDependencies.Add(new RuntimeDependency(LibraryPath + "/armeabi-v7a/libopencv_java3.so"));
        RuntimeDependencies.Add(new RuntimeDependency(LibraryPath + "/arm64-v8a/libopencv_java3.so"));


    }

and I have added the public dependency on MyProject.Build.cs file as following:

PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “HeadMountedDisplay”, “OpenCV” });

My problem is that when I try to compile, the compiler doesn’t return any kind of error and the #include works fine, but on linking it returns LNK2001 and LNK2019 error code. Can anyone tell me what I am doing wrong or if I’m missing some step on linking libraries?

Thank You very much

Were you able to figure this out ?

Yes, I figured out the problem. It was a miscreation of the module. I’ve created an engine plugin for the OpenCV instead of making is as an internal module