Question

I downloaded the no-installer version of ImageMagick (ImageMagick-6.8.6-8-Q16-x86-windows.zip) to use in a project, but it's quite big at 123MB.

I only need mogrify.exe to do a simple image resize. I copied it to a separate directory, and it runs fine, but I'm not sure whether I already have some of the required DLLs (the user may not have these).

I ran Process Explorer on mogrify, but it said there were no DLLs in use by the image.

Is this correct or do I also need to include any of these?

atl100.dll mfc100.dll msvcp100.dll msvcr100.dll vcomp100.dll X11.dll Xext.dll

(full list from the zip file)

I believe vcomp100.dll is part of the Visual C++ redistributable, so I guess I should include this, in case that isn't installed on the user's machine?

On the flip-side, X11.dll looks unnecessary.

Is there an easier way to figure this out, other than researching each individual DLL?

Était-ce utile?

La solution

The vcomp100.dll library is the only dependency for resizing within mogrify.exe. For safety, you should re-distribute that DLL in the same directory as the executable.

Is there an easier way to figure this out, other than researching each individual DLL?

I can't answer what the easiest method would be (outside of reading each libraries documentation), but I would highly suggest authoring a unit test to ensure all the expect functionality of your requirements are meet. I was able to run a test suite on a vanilla install of XP (via VirtualBox), and confirmed that resizing of PNG, JPEG, and basic drawing work without additional dependencies.

Autres conseils

To discover executables and dll dependencies on Windows you can use DependencyWalker (free tool). ProcessExplorer only tells you which DLLs are loaded by a process in the a specific moment you examine it. A DLL may be loaded on demand or not at all, depending on the needs of the executable, thus DependencyWalker can help you in more cases.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top