From 87e96a901758c6d1ba3a49813d28e3fa3d82f5f4 Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Tue, 20 Jun 2023 16:28:37 +0300 Subject: [PATCH] Fix native library lookup after hot reload --- Source/Engine/Engine/NativeInterop.cs | 11 ----------- Source/Engine/Scripting/Runtime/DotNet.cpp | 3 ++- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/Source/Engine/Engine/NativeInterop.cs b/Source/Engine/Engine/NativeInterop.cs index b33e4bcb6..faa19d060 100644 --- a/Source/Engine/Engine/NativeInterop.cs +++ b/Source/Engine/Engine/NativeInterop.cs @@ -58,19 +58,8 @@ namespace FlaxEngine.Interop if (!loadedNativeLibraries.TryGetValue(libraryName, out IntPtr nativeLibrary)) { if (!nativeLibraryPaths.TryGetValue(libraryName, out var nativeLibraryPath)) - { nativeLibraryPath = libraryName; - // Check if any of the loaded assemblies has matching native module filename - foreach (var e in nativeLibraryPaths) - { - if (string.Equals(Path.GetFileNameWithoutExtension(e.Value), libraryName, StringComparison.Ordinal)) - { - nativeLibraryPath = e.Value; - break; - } - } - } nativeLibrary = NativeLibrary.Load(nativeLibraryPath, assembly, dllImportSearchPath); loadedNativeLibraries.Add(libraryName, nativeLibrary); assemblyOwnedNativeLibraries.Add(assembly, libraryName); diff --git a/Source/Engine/Scripting/Runtime/DotNet.cpp b/Source/Engine/Scripting/Runtime/DotNet.cpp index f2c5ee376..1736cc106 100644 --- a/Source/Engine/Scripting/Runtime/DotNet.cpp +++ b/Source/Engine/Scripting/Runtime/DotNet.cpp @@ -712,7 +712,8 @@ bool MAssembly::LoadImage(const String& assemblyPath, const StringView& nativePa // Provide new path of hot-reloaded native library path for managed DllImport if (nativePath.HasChars()) { - RegisterNativeLibrary(assemblyPathAnsi.Get(), StringAnsi(nativePath).Get()); + StringAnsi nativeName = _name.EndsWith(".CSharp") ? StringAnsi(_name.Get(), _name.Length() - 7) : StringAnsi(_name); + RegisterNativeLibrary(nativeName.Get(), StringAnsi(nativePath).Get()); } _hasCachedClasses = false;