Selaa lähdekoodia

Fix failure to load DLL with unicode path

- Change LoadLibrary API to unicode version on Windows
Younguk Kim 8 vuotta sitten
vanhempi
sitoutus
99cf21acec
1 muutettua tiedostoa jossa 5 lisäystä ja 5 poistoa
  1. 5 5
      dtool/src/dtoolutil/load_dso.cxx

+ 5 - 5
dtool/src/dtoolutil/load_dso.cxx

@@ -47,20 +47,20 @@ load_dso(const DSearchPath &path, const Filename &filename) {
   if (!abspath.is_regular_file()) {
     return NULL;
   }
-  string os_specific = abspath.to_os_specific();
+  wstring os_specific_w = abspath.to_os_specific_w();
 
   // Try using LoadLibraryEx, if possible.
-  typedef HMODULE (WINAPI *tLoadLibraryEx)(LPCTSTR, HANDLE, DWORD);
+  typedef HMODULE (WINAPI *tLoadLibraryEx)(LPCWSTR, HANDLE, DWORD);
   tLoadLibraryEx pLoadLibraryEx;
   HINSTANCE hLib = LoadLibrary("kernel32.dll");
   if (hLib) {
-    pLoadLibraryEx = (tLoadLibraryEx)GetProcAddress(hLib, "LoadLibraryExA");
+    pLoadLibraryEx = (tLoadLibraryEx)GetProcAddress(hLib, "LoadLibraryExW");
     if (pLoadLibraryEx) {
-      return pLoadLibraryEx(os_specific.c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+      return pLoadLibraryEx(os_specific_w.c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
     }
   }
 
-  return LoadLibrary(os_specific.c_str());
+  return LoadLibraryW(os_specific_w.c_str());
 }
 
 bool