Hello!
I am very unfamiliar with the unreal build tool and I need to link several third party libraries to UE4, starting with OpenCV.
I started with a first-person code template and attempted to edit the generated build.cs game module to add the include directory as well as link the .lib and .dll dependencies.
Here is the code so far:
using UnrealBuildTool;
public class UnrealRobotics : ModuleRules
{
public UnrealRobotics(TargetInfo Target)
{
PublicDependencyModuleNames.AddRange(new string[] { āCoreā, āCoreUObjectā, āEngineā, āInputCoreā });
// Create OpenCV Path
string OpenCVPath = UEBuildConfiguration.UEThirdPartySourceDirectory + "OpenCV";
// Add include Path
PublicIncludePaths.Add(OpenCVPath + "/inc");
PublicIncludePaths.Add(OpenCVPath + "/inc/opencv2");
// Get Library Path
string LibPath;
bool isdebug = Target.Configuration == UnrealTargetConfiguration.Debug && BuildConfiguration.bDebugBuildsActuallyUseDebugCRT;
if (Target.Platform == UnrealTargetPlatform.Win64)
LibPath = OpenCVPath + "/lib/Win64/VS" + WindowsPlatform.GetVisualStudioCompilerVersionName();
else if (Target.Platform == UnrealTargetPlatform.Win32)
LibPath = OpenCVPath + "/lib/Win32/VS" + WindowsPlatform.GetVisualStudioCompilerVersionName();
else
{
string Err = string.Format("{0} dedicated server is made to depend on {1}. We want to avoid this, please correct module dependencies.", Target.Platform.ToString(), this.ToString());
System.Console.WriteLine(Err);
throw new BuildException(Err);
}
// Add Library Path
PublicLibraryPaths.Add(LibPath);
System.Console.WriteLine(LibPath);
// Add Dependencies
if (!isdebug)
{
PublicAdditionalLibraries.Add("opencv_calib3d2410.lib");
PublicAdditionalLibraries.Add("opencv_contrib2410.lib");
PublicAdditionalLibraries.Add("opencv_core2410.lib");
PublicAdditionalLibraries.Add("opencv_features2d2410.lib");
PublicAdditionalLibraries.Add("opencv_flann2410.lib");
PublicAdditionalLibraries.Add("opencv_gpu2410.lib");
PublicAdditionalLibraries.Add("opencv_highgui2410.lib");
PublicAdditionalLibraries.Add("opencv_imgproc2410.lib");
PublicAdditionalLibraries.Add("opencv_legacy2410.lib");
PublicAdditionalLibraries.Add("opencv_ml2410.lib");
PublicAdditionalLibraries.Add("opencv_nonfree2410.lib");
PublicAdditionalLibraries.Add("opencv_objdetect2410.lib");
PublicAdditionalLibraries.Add("opencv_ocl2410.lib");
PublicAdditionalLibraries.Add("opencv_photo2410.lib");
PublicAdditionalLibraries.Add("opencv_stitching2410.lib");
PublicAdditionalLibraries.Add("opencv_superres2410.lib");
PublicAdditionalLibraries.Add("opencv_ts2410.lib");
PublicAdditionalLibraries.Add("opencv_video2410.lib");
PublicAdditionalLibraries.Add("opencv_videostab2410.lib");
PublicDelayLoadDLLs.Add("opencv_calib3d2410.dll");
PublicDelayLoadDLLs.Add("opencv_contrib2410.dll");
PublicDelayLoadDLLs.Add("opencv_core2410.dll");
PublicDelayLoadDLLs.Add("opencv_features2d2410.dll");
PublicDelayLoadDLLs.Add("opencv_flann2410.dll");
PublicDelayLoadDLLs.Add("opencv_gpu2410.dll");
PublicDelayLoadDLLs.Add("opencv_highgui2410.dll");
PublicDelayLoadDLLs.Add("opencv_imgproc2410.dll");
PublicDelayLoadDLLs.Add("opencv_legacy2410.dll");
PublicDelayLoadDLLs.Add("opencv_ml2410.dll");
PublicDelayLoadDLLs.Add("opencv_nonfree2410.dll");
PublicDelayLoadDLLs.Add("opencv_objdetect2410.dll");
PublicDelayLoadDLLs.Add("opencv_ocl2410.dll");
PublicDelayLoadDLLs.Add("opencv_photo2410.dll");
PublicDelayLoadDLLs.Add("opencv_stitching2410.dll");
PublicDelayLoadDLLs.Add("opencv_superres2410.dll");
PublicDelayLoadDLLs.Add("opencv_ts2410.dll");
PublicDelayLoadDLLs.Add("opencv_video2410.dll");
PublicDelayLoadDLLs.Add("opencv_videostab2410.dll");
}
else
{
PublicAdditionalLibraries.Add("opencv_calib3d2410d.lib");
PublicAdditionalLibraries.Add("opencv_calib3d2410d.lib");
PublicAdditionalLibraries.Add("opencv_contrib2410d.lib");
PublicAdditionalLibraries.Add("opencv_core2410d.lib");
PublicAdditionalLibraries.Add("opencv_features2d2410d.lib");
PublicAdditionalLibraries.Add("opencv_flann2410d.lib");
PublicAdditionalLibraries.Add("opencv_gpu2410d.lib");
PublicAdditionalLibraries.Add("opencv_highgui2410d.lib");
PublicAdditionalLibraries.Add("opencv_imgproc2410d.lib");
PublicAdditionalLibraries.Add("opencv_legacy2410d.lib");
PublicAdditionalLibraries.Add("opencv_ml2410d.lib");
PublicAdditionalLibraries.Add("opencv_nonfree2410d.lib");
PublicAdditionalLibraries.Add("opencv_objdetect2410d.lib");
PublicAdditionalLibraries.Add("opencv_ocl2410d.lib");
PublicAdditionalLibraries.Add("opencv_photo2410d.lib");
PublicAdditionalLibraries.Add("opencv_stitching2410d.lib");
PublicAdditionalLibraries.Add("opencv_superres2410d.lib");
PublicAdditionalLibraries.Add("opencv_ts2410d.lib");
PublicAdditionalLibraries.Add("opencv_video2410d.lib");
PublicAdditionalLibraries.Add("opencv_videostab2410d.lib");
PublicDelayLoadDLLs.Add("opencv_calib3d2410d.dll");
PublicDelayLoadDLLs.Add("opencv_contrib2410d.dll");
PublicDelayLoadDLLs.Add("opencv_core2410d.dll");
PublicDelayLoadDLLs.Add("opencv_features2d2410d.dll");
PublicDelayLoadDLLs.Add("opencv_flann2410d.dll");
PublicDelayLoadDLLs.Add("opencv_gpu2410d.dll");
PublicDelayLoadDLLs.Add("opencv_highgui2410d.dll");
PublicDelayLoadDLLs.Add("opencv_imgproc2410d.dll");
PublicDelayLoadDLLs.Add("opencv_legacy2410d.dll");
PublicDelayLoadDLLs.Add("opencv_ml2410d.dll");
PublicDelayLoadDLLs.Add("opencv_nonfree2410d.dll");
PublicDelayLoadDLLs.Add("opencv_objdetect2410d.dll");
PublicDelayLoadDLLs.Add("opencv_ocl2410d.dll");
PublicDelayLoadDLLs.Add("opencv_photo2410d.dll");
PublicDelayLoadDLLs.Add("opencv_stitching2410d.dll");
PublicDelayLoadDLLs.Add("opencv_superres2410d.dll");
PublicDelayLoadDLLs.Add("opencv_ts2410d.dll");
PublicDelayLoadDLLs.Add("opencv_video2410d.dll");
PublicDelayLoadDLLs.Add("opencv_videostab2410d.dll");
}
}
}
I put all the files in the ThirdParty directory. The above code causes a compiler error (error LNK1181: cannot open input file āopencv_calib3d2410.libā). I have tried How to link *.dll about third party library? - C++ - Unreal Engine Forums
and
with no progress! Any help would be greatly appreciated