What's your exact version? You can paste it into a post after setting _cliptext=Version(4).
I think gdiplus.dll is put into C:\Program Files (x86)\Common Files\Microsoft Shared\VFP\ from an installation. If you moved an installation from an old PC to a new one and registered it there and installed runtimes by using the runtime installers it might be missing. Or it could be in the instructions of a hotfix to put the gdiplus.dll from the hotfix there. And
Anyway, you can find out which gdi+ DLL VFP9.exe or your own EXE uses from resource monitor, as said. Start resource monitor. In the overview tab in the CPU section sort by the images column and find your EXE name there and check the checkbox. Then go to the CPU tab. In the "Associated Modules" tab you find DLLs that are loaded by your process. There is indeed also gdi32.dll in my list, taken from System32, even. But the only one of interest is really the gdiplus.dll
If you google for that version number 5.2.6001.22319 I have in MS Shared you find MS09-062: Description of the security update for GDI+. It's nothing to worry about now, it has already been pushed out by windows update and as you will see you'll also have a much newer version, I think.
It's just that the gdiplusx project originated in the year VFP9 was quite new and the gdi+ DLL security fix was released. I don't think the gdiplusx app will offer any more functionality from a newer gdiplus.dll you just benefit from performance improvements but could fail on something not downward compatible. That's the only reason I think it's better to use the one gdiplus.dll that came from that security fix back then.
I just remember back then you actually had to make the gdiplus.dll fix yourself and it was not within one of the vfp9 service packs or hotfixes, but might have been added to them as a runtime file. It is also listed in the runtime explainer on
to which nobody can get, currently. But you can see it here:
It's actually mentioned as second file after the msvcr71.dll c++ runtime DLL and said to be in Microsoft Shared\VFP.
The wiki also says about gdiplus.dll: "GDIPLUS.DLL is only required for versions of Windows prior to 2000 (per Microsoft document entitled Visual Foxpro 9 - Application Distribution Process."
When my suspicion a newer version could contribute to problems is true, that might need to be modified to say prior to 2000 or later than 2023.
One thing I am certainly sure about is that it can't hurt to use the older gdiplus.dll as vfp9 itself does not depend on anything newer and your own built EXE only, if you explicitly would make use of new or changed API functions. The only other benefit is downward compatible performance improvements. That speaks for the newest gdipluls.dll and new graphics hardware only working with the newest gdiplus.dll versions could also be a problem. So in the end this could even become a situation of neither DLL works for all concerns about compatibility with VFP and hardware support at the same time.
But let's take it relaxed: Since everything works now for both of us, we should perhaps do what's the simplest option: Do nothing.
If you're interested in getting the 5.2.6001.22319 version I attach it here.
I can just say it's not used by vfp9.exe itself, the MS shared/VFP folder is actually there for you to find all runtime DLLs necessary for your setups, if you don't use InstallShield and the merge modules of C++ 7.1 runtimes and VFP runtimes for creating a setup with them. VFP9.exe also doesn't use any other DLL from that MS Shared folder. The IDE, the vFp9.exe itself, does not need the vfp9r.dll, too, as that's all integrated into vfp9.exe. To have a different language IDE, you also can't use the vfp9rXYZ.dlls with XYZ being one of the languages. The IDE needs other resource DLLs, which only exist for older VFP versions, officially. I think VFP7 was the last version with multiple language IDE.
In short, that's why your VFP9 setup is still okay, VFP itself doesn't depend on MS Shared/VFP to work.
Chriss