浏览代码

Merge pull request #18482 from profan/master

Fix shared lib loading for Unix, dlopen expects leading ./ for relative paths.
Max Hilbrunner 7 年之前
父节点
当前提交
3204362cd1
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      drivers/unix/os_unix.cpp

+ 6 - 0
drivers/unix/os_unix.cpp

@@ -349,6 +349,12 @@ Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle
 
 	String path = p_path;
 
+	if (FileAccess::exists(path) && path.is_rel_path()) {
+		// dlopen expects a slash, in this case a leading ./ for it to be interpreted as a relative path,
+		//  otherwise it will end up searching various system directories for the lib instead and finally failing.
+		path = "./" + path;
+	}
+
 	if (!FileAccess::exists(path)) {
 		//this code exists so gdnative can load .so files from within the executable path
 		path = get_executable_path().get_base_dir().plus_file(p_path.get_file());