@@ -851,7 +851,8 @@ namespace FlaxEngine.Interop
|
|||||||
*assemblyFullName = NativeAllocStringAnsi(flaxEngineAssembly.FullName);
|
*assemblyFullName = NativeAllocStringAnsi(flaxEngineAssembly.FullName);
|
||||||
return GetAssemblyHandle(flaxEngineAssembly);
|
return GetAssemblyHandle(flaxEngineAssembly);
|
||||||
}
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
string assemblyPath = Marshal.PtrToStringAnsi(assemblyPathPtr);
|
string assemblyPath = Marshal.PtrToStringAnsi(assemblyPathPtr);
|
||||||
|
|
||||||
Assembly assembly;
|
Assembly assembly;
|
||||||
@@ -885,6 +886,12 @@ namespace FlaxEngine.Interop
|
|||||||
*assemblyFullName = NativeAllocStringAnsi(assembly.FullName);
|
*assemblyFullName = NativeAllocStringAnsi(assembly.FullName);
|
||||||
return GetAssemblyHandle(assembly);
|
return GetAssemblyHandle(assembly);
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogException(ex);
|
||||||
|
}
|
||||||
|
return new ManagedHandle();
|
||||||
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly]
|
[UnmanagedCallersOnly]
|
||||||
internal static ManagedHandle GetAssemblyByName(IntPtr namePtr, IntPtr* assemblyName, IntPtr* assemblyFullName)
|
internal static ManagedHandle GetAssemblyByName(IntPtr namePtr, IntPtr* assemblyName, IntPtr* assemblyFullName)
|
||||||
|
|||||||
@@ -704,12 +704,10 @@ bool MAssembly::LoadImage(const String& assemblyPath, const StringView& nativePa
|
|||||||
// TODO: Use new hostfxr delegate load_assembly_bytes? (.NET 8+)
|
// TODO: Use new hostfxr delegate load_assembly_bytes? (.NET 8+)
|
||||||
// Open .Net assembly
|
// Open .Net assembly
|
||||||
const StringAnsi assemblyPathAnsi = assemblyPath.ToStringAnsi();
|
const StringAnsi assemblyPathAnsi = assemblyPath.ToStringAnsi();
|
||||||
const char* name;
|
const char* name = nullptr;
|
||||||
const char* fullname;
|
const char* fullname = nullptr;
|
||||||
static void* LoadAssemblyImagePtr = GetStaticMethodPointer(TEXT("LoadAssemblyImage"));
|
static void* LoadAssemblyImagePtr = GetStaticMethodPointer(TEXT("LoadAssemblyImage"));
|
||||||
_handle = CallStaticMethod<void*, const char*, const char**, const char**>(LoadAssemblyImagePtr, assemblyPathAnsi.Get(), &name, &fullname);
|
_handle = CallStaticMethod<void*, const char*, const char**, const char**>(LoadAssemblyImagePtr, assemblyPathAnsi.Get(), &name, &fullname);
|
||||||
_name = name;
|
|
||||||
_fullname = fullname;
|
|
||||||
MCore::GC::FreeMemory((void*)name);
|
MCore::GC::FreeMemory((void*)name);
|
||||||
MCore::GC::FreeMemory((void*)fullname);
|
MCore::GC::FreeMemory((void*)fullname);
|
||||||
if (_handle == nullptr)
|
if (_handle == nullptr)
|
||||||
@@ -717,6 +715,8 @@ bool MAssembly::LoadImage(const String& assemblyPath, const StringView& nativePa
|
|||||||
Log::CLRInnerException(TEXT(".NET assembly image is invalid at ") + assemblyPath);
|
Log::CLRInnerException(TEXT(".NET assembly image is invalid at ") + assemblyPath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
_name = name;
|
||||||
|
_fullname = fullname;
|
||||||
CachedAssemblyHandles.Add(_handle, this);
|
CachedAssemblyHandles.Add(_handle, this);
|
||||||
|
|
||||||
// Provide new path of hot-reloaded native library path for managed DllImport
|
// Provide new path of hot-reloaded native library path for managed DllImport
|
||||||
|
|||||||
Reference in New Issue
Block a user