[Ecls-list] deploying ECL built using VC8 on Windows

Goffioul Michael goffioul at imec.be
Thu Jun 21 08:24:14 UTC 2007


> Just a heads up for Windows users.
> 
> If you deploy ECL built with VC8 onto a PC without VC8 
> environment (eg. 
> VS2005) installed, you may run issues as we did with ECL and 
> our own C++ applications.
> 
> ECL seems to be built using /MD flag to use the VC runtime 
> DLL's and the ecl.exe.manifest file is supposed to aid VC8 
> DLL detection (or whatever :)
> 
> We have found on a number of PC's simply having the VC8 DLL's 
> in system folders was still causing problems.
> Manifest seems to sort it out sometimes, but just now for ECL 
> it did not help.

You should consider embedding the manifest into the ecl executable.
Use mt.exe for this: mt -outputresource:ecl.exe -manifest
ecl.exe.manifest.
Then you don't have to distribute the manifest file.

> The application won't start and you get some kind of config 
> error and Windows tells you to try reinstalling.
> It seemed a bit random but the following approach sorted it.
> 
> So we found the "proper" method of VC8 runtime deployment 
> using build-your-own MSI installers.
> This method worked flawlessly for us and we didn't need a 
> manifest I think.
> 
> The first comment of this link, provides the exact steps to 
> create these MSI installers.
> http://msdn2.microsoft.com/en-us/library/zebw5zk9(VS.80).aspx

An alternative method is given here (4th message)
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=164465&SiteID=1
It has the advantage to be a local installation and does not
require admin rights.

> I tried building ECL with /MT flag to statically link in VC8 
> runtime, but get piles of compile errors.

Building with /MT is dangerous, especially in DLL, because variables
internal to the runtime are not shared. This is the case for instance
with file handles (FILE*), which cannot be shared between modules
(.exe or .dll) if you compiled the runtime statically.

Michael.




More information about the ecl-devel mailing list