prime Posted November 22, 2020 Share Posted November 22, 2020 Hi there, Compiling from git MESSUI repository....using recommended mame build environment on windows 10 X64 Compile of both messui and winui with "make PTR64=1 SUBTARGET=mess OSD=newui" and "make PTR64=1 SUBTARGET=mess OSD=messui" complete successfully and produce mame64.exe and mameui64.exe However when I try to run mameui64.exe I get a popup box with "MESSUI64 has detected an old version of comctl32.dll. Unable to proceed" Investigating with process monitor I find that it's trying to load the DLL from "C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.488_none_4238de57f6b64d28\comctl32.dll" Which is version 5.82 of the DLL, so strange that it's failing the test. On further inversigation in mui_util.cpp, it seems to be failing the following test : FARPROC lpfnDLLI = GetProcAddress(hModule, "DllInstall"); if (NULL != lpfnDLLI) { ..... } return PACKVERSION(4,7); commenting out the if alows the test to pass and 5 82 is returned to the calling code in winui.cpp, however then it crahes with "Win32UI_init: Error creating main dialog, aborting" So something's wrong Cheers. Phill. Link to comment Share on other sites More sharing options...
Robert Posted November 23, 2020 Share Posted November 23, 2020 I can only support what I build. See the notice at https://messui.1emulation.com/ Quote You can compile your own binary by accessing the listed github repository, and using the tools and options listed above. This is provided as a license requirement only. Compile issues are not supported. You're on your own. You should tell your windows to use the comctl32.dll that is in c:\windows\system32. You might need to register the dll. On my system it says File version 5.82.18362.1139 and Product version 10.0.18362.1139 The things that are in winsxs are for system restores, and should not be accessible to the normal user. Link to comment Share on other sites More sharing options...
prime Posted November 26, 2020 Author Share Posted November 26, 2020 I think the crux of the matter is that the init code *ASSUMES* that if "DllInstall" is not exported by comctl32.dll that it is 4.7 or below, however reading the documetation for comctl32.dll it seems that DllInstall only exists for versions 4.71 to 5.81. Versions higher than 5.82 don't have DllInstall, which means that the code in mui_util.cpp assumes it is 4.71 or below which is incorrect. Also during investigation I found that InitCommonControls() is effectively nop, and needs to be replaced with calls to InitCommonControlsEx() Documented by MS : https://docs.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-initcommoncontrols Cheers. Phill. Link to comment Share on other sites More sharing options...
Robert Posted November 27, 2020 Share Posted November 27, 2020 The code already says InitCommonControlsEx. (mui_util.cpp, line 427, current git). I'm not sure about "DllInstall", but since it works for me it can't be an issue. Do the following: From the command line, do >mameui64 > x When it has started up (or in your case failed), exit back to the command line. >type x | find "controlversion" In my case it says Win32UI_init: Common controlversion 6 16 what does it say for you? Link to comment Share on other sites More sharing options...
prime Posted November 28, 2020 Author Share Posted November 28, 2020 On 11/27/2020 at 12:31 PM, Robert said: In my case it says Win32UI_init: Common controlversion 6 16 what does it say for you? $ ./messui64.exe MAMEUI starting Win32UI_init: About to init options OptionsInit: About to load MESSUI.ini OptionsInit: About to load MESS_g.ini game_opts.h::load_file : Rebuilding cache game_opts.h::load_file : Finished Rebuilding cache OptionsInit: Finished emuOptsInit: About to load ini\ui.ini emuOptsInit: About to load Global Options emuOptsInit: Finished G:\EmulateDev\messui-2020-11-27\ Win32UI_init: Options loaded Win32UI_init: Common controlversion 4 7 On my normal Windows 10 machine. So 4.7, but as I said at the head of the post the comctl32.dll that is getting loaded is from the WinSXS (windows side by side, not for system restores apparently) folder, and is version 5.82 Product version 10.0.19041.488. I also tried compiling on a Windows 7 machine just to iliminate the windows version. That also says version 4.7 but this time loads from : C:\Windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_a4d981ff711297b6\comctl32.dll and again is version 5.82 My build environment is : latest mame deveolpment environment from the mame website on Windows 10 X64, it is the Enterprise version, and has the latest 20H2 update on it. Oddly on both platforms if I do messui64 -v it runs though behaves like mess64. Cheers. Phill. On 11/27/2020 at 12:31 PM, Robert said: Link to comment Share on other sites More sharing options...
Robert Posted November 29, 2020 Share Posted November 29, 2020 I can only repeat that WinSXS should not be accessible to users. It's for system restores only, and for the TrustedInstaller. If you add command-line arguments, it causes the command-line version to run, that is normal. There's nothing more I can say, since I have not encountered this problem, and up till now, nobody else has either. Link to comment Share on other sites More sharing options...
prime Posted November 29, 2020 Author Share Posted November 29, 2020 16 hours ago, Robert said: I can only repeat that WinSXS should not be accessible to users. It's for system restores only, and for the TrustedInstaller. If you add command-line arguments, it causes the command-line version to run, that is normal. There's nothing more I can say, since I have not encountered this problem, and up till now, nobody else has either. You keep saying it's for system restores, that does not appear to be the case : https://en.wikipedia.org/wiki/Side-by-side_assembly Well it worked for me on a version checked out on nov 1st, and reports comctl version 6 16. $ ./messui64.exe MAMEUI starting Win32UI_init: About to init options OptionsInit: About to load MAMEUI.ini OptionsInit: About to load ini\ui.ini OptionsInit: About to load MAME_g.ini OptionsInit: About to load Global Options OptionsInit: Finished Win32UI_init: Options loaded Win32UI_init: Common controlversion 6 16 The next version checked out on 20th of Nov started exhibiting the above behavior. So something changed in that time period that has borked it. As for no one else experiencing this if they checked out before the latest changes the problem might not have shown up. Can I ask what is your exact build environment? Windows version, etc? Cheers. Phill. Link to comment Share on other sites More sharing options...
Robert Posted November 29, 2020 Share Posted November 29, 2020 Windows 10, 64 bit. It's a few months behind updates though. Not using 20H2 - I never use their bleeding-edge version, because of the bugs that they always seem to include. I'll most likely get the minimum of updates around end-of-year. Link to comment Share on other sites More sharing options...
prime Posted November 30, 2020 Author Share Posted November 30, 2020 Additional information : Investiagting the working early Nov verses Non working Nov 20th, the windows manifest is different for the two versions the working version contains the lines : <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> Which is I guess why it is loading the correct comctl32.dll, the later non working exe does not contain these lines. On investigation it appears that the manifest is not being included at build time, it was previously included from : src/osd/winui/mameui.rc putting the line to load it back in and rebuilding and when running it reports version 6 16 as for the working version but then bombs out saying "Win32UI_init: Error creating main dialog, aborting". I also notice that "build\mingw-gcc\obj\x64\Release\mess.res" is 9K in the non working version 495K in the working version so I suspect that the resources are not being built correctly. It's possible that you have not seen the probleb because there are old versions of the file that are being linked and therefore everything works. Have you tried checking out from the repository and building from there (or doing a make clean)? Cheers. Phill. Link to comment Share on other sites More sharing options...
Robert Posted December 1, 2020 Share Posted December 1, 2020 I'll have a look at that. Things were changed around in messui recently. However this particular change was not done with mameui or hbmame; are you able to build and run them? Link to comment Share on other sites More sharing options...
prime Posted December 1, 2020 Author Share Posted December 1, 2020 10 hours ago, Robert said: I'll have a look at that. Things were changed around in messui recently. However this particular change was not done with mameui or hbmame; are you able to build and run them? I'll checkout mameui and try that, and report back. Cheers. Phill. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now