Distinguishs between dynamic library not found and can't be opened.
This commit is contained in:
parent
13a0d6e9b2
commit
fe6b073811
|
@ -715,10 +715,8 @@ Error GDExtension::open_library(const String &p_path, const String &p_entry_symb
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Error err = OS::get_singleton()->open_dynamic_library(abs_path, library, true, &library_path);
|
Error err = OS::get_singleton()->open_dynamic_library(abs_path, library, true, &library_path);
|
||||||
if (err != OK) {
|
ERR_FAIL_COND_V_MSG(err == ERR_FILE_NOT_FOUND, err, "GDExtension dynamic library not found: " + abs_path);
|
||||||
ERR_PRINT("GDExtension dynamic library not found: " + abs_path);
|
ERR_FAIL_COND_V_MSG(err != OK, err, "Can't open GDExtension dynamic library: " + abs_path);
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(WINDOWS_ENABLED) && defined(TOOLS_ENABLED)
|
#if defined(WINDOWS_ENABLED) && defined(TOOLS_ENABLED)
|
||||||
// If we copied the file, let's change the library path to point at the original,
|
// If we copied the file, let's change the library path to point at the original,
|
||||||
|
|
|
@ -656,6 +656,8 @@ Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle
|
||||||
path = get_executable_path().get_base_dir().path_join("../lib").path_join(p_path.get_file());
|
path = get_executable_path().get_base_dir().path_join("../lib").path_join(p_path.get_file());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND);
|
||||||
|
|
||||||
p_library_handle = dlopen(path.utf8().get_data(), GODOT_DLOPEN_MODE);
|
p_library_handle = dlopen(path.utf8().get_data(), GODOT_DLOPEN_MODE);
|
||||||
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
||||||
|
|
||||||
|
|
|
@ -170,6 +170,8 @@ Error OS_Android::open_dynamic_library(const String p_path, void *&p_library_han
|
||||||
so_file_exists = false;
|
so_file_exists = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND);
|
||||||
|
|
||||||
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
||||||
if (!p_library_handle && so_file_exists) {
|
if (!p_library_handle && so_file_exists) {
|
||||||
// The library may be on the sdcard and thus inaccessible. Try to copy it to the internal
|
// The library may be on the sdcard and thus inaccessible. Try to copy it to the internal
|
||||||
|
|
|
@ -257,6 +257,8 @@ Error OS_IOS::open_dynamic_library(const String p_path, void *&p_library_handle,
|
||||||
path = get_framework_executable(get_executable_path().get_base_dir().path_join("Frameworks").path_join(p_path.get_file().get_basename() + ".framework"));
|
path = get_framework_executable(get_executable_path().get_base_dir().path_join("Frameworks").path_join(p_path.get_file().get_basename() + ".framework"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND);
|
||||||
|
|
||||||
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
||||||
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,8 @@ Error OS_MacOS::open_dynamic_library(const String p_path, void *&p_library_handl
|
||||||
path = get_framework_executable(get_executable_path().get_base_dir().path_join("../Frameworks").path_join(p_path.get_file()));
|
path = get_framework_executable(get_executable_path().get_base_dir().path_join("../Frameworks").path_join(p_path.get_file()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND);
|
||||||
|
|
||||||
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
||||||
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));
|
||||||
|
|
||||||
|
|
|
@ -360,6 +360,8 @@ Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_han
|
||||||
path = get_executable_path().get_base_dir().path_join(p_path.get_file());
|
path = get_executable_path().get_base_dir().path_join(p_path.get_file());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND);
|
||||||
|
|
||||||
typedef DLL_DIRECTORY_COOKIE(WINAPI * PAddDllDirectory)(PCWSTR);
|
typedef DLL_DIRECTORY_COOKIE(WINAPI * PAddDllDirectory)(PCWSTR);
|
||||||
typedef BOOL(WINAPI * PRemoveDllDirectory)(DLL_DIRECTORY_COOKIE);
|
typedef BOOL(WINAPI * PRemoveDllDirectory)(DLL_DIRECTORY_COOKIE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue