The name 'PublicLibraryPaths' does not exist in the current context (UE5)

Hi all,

I’m having an issue when trying to upgrade a plugin from UE 4.27.2 to UE 5.0.3

It says “The name ‘PublicLibraryPaths’ does not exist in the current context” in the error.
I must change this but- to what? Thanks in advance.

using System.IO;
using UnrealBuildTool;

public class CapabilityDetectLibrary : ModuleRules
{
	public CapabilityDetectLibrary(ReadOnlyTargetRules Target) : base(Target)
	{
		Type = ModuleType.External;

		if (Target.Platform == UnrealTargetPlatform.Win64)
		{
			// Add the import library
			PublicLibraryPaths.Add(Path.Combine(ModuleDirectory, "x64", "Release"));
			PublicAdditionalLibraries.Add("CapabilityDetectLibrary.lib");

			// Delay-load the DLL, so we can load it from the right place first
			PublicDelayLoadDLLs.Add("CapabilityDetectLibrary.dll");
		}
        else if (Target.Platform == UnrealTargetPlatform.Mac)
        {
            PublicDelayLoadDLLs.Add(Path.Combine(ModuleDirectory, "Mac", "Release", "libCapabilityDetectLibrary.dylib"));
        }
	}
}

I assume it’s all .lib files? You can use:

string LibPath = Path.Combine(ModuleDirectory, “x64”, “Release”);
foreach (string file in Directory.GetFiles(LibPath, “*lib”))
{
PublicAdditionalLibraries.Add(file);
}

1 Like

Thanks for the code!

I’m having following error when trying to open my project (Build was successful).

/////////////////////////////////////////////////////////////////////////////////////////////
// Copyright 2017 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or imlied.
// See the License for the specific language governing permissions and
// limitations under the License.
/////////////////////////////////////////////////////////////////////////////////////////////

using System.IO;
using UnrealBuildTool;

public class CapabilityDetectLibrary : ModuleRules
{
	public CapabilityDetectLibrary(ReadOnlyTargetRules Target) : base(Target)
	{
		Type = ModuleType.External;

		if (Target.Platform == UnrealTargetPlatform.Win64)
		{
			// Add the import library
			//PublicLibraryPaths.Add(Path.Combine(ModuleDirectory, "x64", "Release"));
			
			//PublicAdditionalLibraries.Add("CapabilityDetectLibrary.lib");
			//PublicAdditionalLibraries.Add("$(PluginDir)/Source/ThirdParty/CapabilityDetectLibrary/x64/Release/CapabilityDetectLibrary.lib");

			string LibPath = Path.Combine(ModuleDirectory, "x64", "Release");
			foreach (string file in Directory.GetFiles(LibPath, "*lib"))
			{
				PublicAdditionalLibraries.Add(file);
			}
			
			// Delay-load the DLL, so we can load it from the right place first
			PublicDelayLoadDLLs.Add("$(PluginDir)/Source/ThirdParty/CapabilityDetectLibrary/x64/Release/CapabilityDetectLibrary.dll");
			
			PublicIncludePaths.AddRange(
				new string[] {

					// ... add public include paths required here ...
				}
			);
				
		
			PrivateIncludePaths.AddRange(
				new string[] {
					// ... add other private include paths required here ...
				}
			);
			
		
			PublicDependencyModuleNames.AddRange(
				new string[]
				{
					"Core",
					// ... add other public dependencies that you statically link with here ...
				}
			);
			
		
			PrivateDependencyModuleNames.AddRange(
				new string[]
				{
					"CoreUObject",
					"Engine",
					"Slate",
					"SlateCore",
					// ... add private dependencies that you statically link with here ...	
				}
			);
		
		
			DynamicallyLoadedModuleNames.AddRange(
				new string[]
				{
					// ... add any modules that your module loads dynamically here ...
				}
			);
		}
        else if (Target.Platform == UnrealTargetPlatform.Mac)
        {
            PublicDelayLoadDLLs.Add(Path.Combine(ModuleDirectory, "Mac", "Release", "$(PluginDir)/ThirdParty/CapabilityDetectLibrary/Mac/Release/libCapabilityDetectLibrary.dylib"));
        }
	}
}

Build with surface heuristics started at 17:27:11
Use build tool: d:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe
CONSOLE: MSBuild version 17.8.3+195e7f5a3 for .NET Framework
CONSOLE: Build started 11.12.2023 17:27:11.
CONSOLE: Project "C:\Users\DryreL\AppData\Local\Temp\Natypom.proj" on node 1 (default targets).
CONSOLE: ControllerTarget:
CONSOLE:   Run controller from D:\Program Files\JetBrains\JetBrains Rider 2023.2\lib\ReSharperHost\JetBrains.Platform.MsBuildTask.v17.dll
0>------- Started building project: CapabilityDetectLibrary
d:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64\CL.exe /c /Zi /nologo /W3 /WX- /diagnostics:column /sdl /O2 /Oi /GL /D WIN32 /D NDEBUG /D _WINDOWS /D _USRDLL /D EXAMPLELIBRARY_EXPORTS /D _WINDLL /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"x64\Release\\" /Fd"x64\Release\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt CapabilityDetectLibrary.cpp StatsCollector.cpp WindowsCollector.cpp
CapabilityDetectLibrary.cpp
0>CapabilityDetectLibrary.cpp(35,16): Warning C4273 : 'Intel_IsIntelCPU': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(27,16):
see previous definition of 'Intel_IsIntelCPU'

0>CapabilityDetectLibrary.cpp(45,16): Warning C4273 : 'Intel_InitializeResources': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(24,16):
see previous definition of 'Intel_InitializeResources'

0>CapabilityDetectLibrary.cpp(50,15): Warning C4273 : 'Intel_GetNumLogicalCores': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(34,15):
see previous definition of 'Intel_GetNumLogicalCores'

0>CapabilityDetectLibrary.cpp(58,15): Warning C4273 : 'Intel_GetNumPhysicalCores': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(41,15):
see previous definition of 'Intel_GetNumPhysicalCores'

0>CapabilityDetectLibrary.cpp(66,18): Warning C4273 : 'Intel_GetComittedMemoryMB': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(42,18):
see previous definition of 'Intel_GetComittedMemoryMB'

0>CapabilityDetectLibrary.cpp(76,18): Warning C4273 : 'Intel_GetAvailableMemoryMB': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(43,18):
see previous definition of 'Intel_GetAvailableMemoryMB'

0>CapabilityDetectLibrary.cpp(86,18): Warning C4273 : 'Intel_GetCacheSizeMB': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(37,18):
see previous definition of 'Intel_GetCacheSizeMB'

0>CapabilityDetectLibrary.cpp(96,18): Warning C4273 : 'Intel_GetCoreFrequency': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(47,18):
see previous definition of 'Intel_GetCoreFrequency'

0>CapabilityDetectLibrary.cpp(106,18): Warning C4273 : 'Intel_GetCorePercMaxFrequency': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(48,18):
see previous definition of 'Intel_GetCorePercMaxFrequency'

0>CapabilityDetectLibrary.cpp(116,18): Warning C4273 : 'Intel_GetMaxBaseFrequency': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(36,18):
see previous definition of 'Intel_GetMaxBaseFrequency'

0>CapabilityDetectLibrary.cpp(129,18): Warning C4273 : 'Intel_GetUsablePhysMemoryGB': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(35,18):
see previous definition of 'Intel_GetUsablePhysMemoryGB'

0>CapabilityDetectLibrary.cpp(139,16): Warning C4273 : 'Intel_FreeResources': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(30,16):
see previous definition of 'Intel_FreeResources'

0>CapabilityDetectLibrary.cpp(145,16): Warning C4273 : 'Intel_GetSKU': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(49,16):
see previous definition of 'Intel_GetSKU'

0>CapabilityDetectLibrary.cpp(158,16): Warning C4273 : 'Intel_GetFullProcessorName': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(50,16):
see previous definition of 'Intel_GetFullProcessorName'

0>CapabilityDetectLibrary.cpp(170,16): Warning C4273 : 'Intel_GetProcessorName': inconsistent dll linkage
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\CapabilityDetectLibrary.h(51,16):
see previous definition of 'Intel_GetProcessorName'

StatsCollector.cpp
WindowsCollector.cpp
d:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64\link.exe /ERRORREPORT:PROMPT /OUT:"D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.dll" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG:incremental /LTCGOUT:"x64\Release\CapabilityDetectLibrary.iobj" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.lib" /MACHINE:X64 /DLL x64\Release\CapabilityDetectLibrary.obj
x64\Release\StatsCollector.obj
x64\Release\WindowsCollector.obj
   Creating library D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.lib and object D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.exp
Generating code
Previous IPDB not found, fall back to full compilation.
All 1062 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
Finished generating code
CapabilityDetectLibrary.vcxproj -> D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.dll
xcopy "D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.dll" "D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\..\..\..\Binaries\ThirdParty\CapabilityDetectLibrary\Win64\" /Y
:VCEnd
D:\GithubRepos\upgradetest\Plugins\CapabilityDetect\Source\ThirdParty\CapabilityDetectLibrary\x64\Release\CapabilityDetectLibrary.dll
1 File(s) copied
0>------- Finished building project: CapabilityDetectLibrary. Succeeded: True. Errors: 0. Warnings: 15
Build completed in 00:00:03.207

SOLUTION:

PublicLibraryPaths is outdated. Make sure to use PublicIncludePaths.

Additional info (directly from the compiler): Library ‘YOURFILE.lib’ was not resolvable to a file when used in Module ‘YOURFILE’, assuming it is a filename and will search library paths for it. This is slow and dependency checking will not work for it. Please update reference to be fully qualified alternatively use PublicSystemLibraryPaths if you do intended to use this slow path to suppress this warning.

Resources:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.