[FFmpeg-devel] [PATCH] compat: LoadLibrary isn't available on UWP/WinRT

wm4 nfxjfg at googlemail.com
Tue Jun 6 17:13:21 EEST 2017


On Sat, 3 Jun 2017 10:54:08 -0700
Aaron Levinson <alevinsn at aracnet.com> wrote:

> On 6/2/2017 7:11 AM, wm4 wrote:
> > On Fri,  2 Jun 2017 15:29:07 +0200
> > Hugo Beauzée-Luyssen <hugo at beauzee.fr> wrote:
> >   
> >> ---
> >>   compat/w32dlfcn.h | 4 ++++
> >>   1 file changed, 4 insertions(+)
> >>
> >> diff --git a/compat/w32dlfcn.h b/compat/w32dlfcn.h
> >> index bc9bb8c9f5..308763be53 100644
> >> --- a/compat/w32dlfcn.h
> >> +++ b/compat/w32dlfcn.h
> >> @@ -71,7 +71,11 @@ exit:
> >>   #ifndef LOAD_LIBRARY_SEARCH_SYSTEM32
> >>   #   define LOAD_LIBRARY_SEARCH_SYSTEM32        0x00000800
> >>   #endif
> >> +#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
> >>       return LoadLibraryExA(name, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32);
> >> +#else
> >> +    return NULL;
> >> +#endif
> >>   }
> >>   #define dlopen(name, flags) win32_dlopen(name)
> >>   #define dlclose FreeLibrary  
> > 
> > Isn't it that LoadLibraryW is available, just not the A version?  
> 
> According to 
> https://msdn.microsoft.com/en-us/library/windows/apps/mt654039.aspx#_api-ms-win-core-libraryloader-l1-2-0.dll 
> , both the A and W versions of LoadLibrary and LoadLibraryEx would seem 
> to be available on UWP.  However, at the same time, I don't see any of 
> the LoadLibrary APIs listed at either 
> https://msdn.microsoft.com/en-us/library/windows/apps/dn424765.aspx , 
> https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis , or 
> https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-extension-apis 
> , so perhaps LoadLibrary and LoadLibraryEx aren't supported.  So, there 
> appears to be some conflicting information on MSDN.  According to 
> https://msdn.microsoft.com/en-us/library/mt186162.aspx , it is necessary 
> to use LoadPackagedLibrary in UWP apps instead of LoadLibrary or 
> LoadLibraryEx.
> 
> According to the article, "These macros are only available in Windows 
> SDK 8.1 and later, so if your code needs to compile with earlier 
> versions of the Windows SDK or for other platforms besides Windows, then 
> you should also consider the case that none of them are defined."  I'm 
> not aware of ffmpeg necessarily having a requirement that it be built 
> with the Windows 8.1 SDK or later, and this lack of requirement would 
> tend to indicate that the proposed patch isn't sufficient.  Plus, there 
> is no reason to #define LOAD_LIBRARY_SEARCH_SYSTEM32 if the code won't 
> be built anyway.

Actually libwinstorecompat seems to have a wrapper:

HMODULE WINAPI LoadLibraryW(LPCWSTR lpFileName)
{
    return LoadPackagedLibrary(lpFileName, 0);
}

(Good one, Microsoft...)


More information about the ffmpeg-devel mailing list