Konstantin, On 7/11/14, 3:02 PM, Konstantin Preißer wrote: > Hi, > >> -----Original Message----- >> From: Konstantin Preißer [mailto:kpreis...@apache.org] >> Sent: Friday, July 11, 2014 8:18 PM >> To: 'Tomcat Developers List' >> Subject: RE: Working tc native build >> >> Hi Christopher, >> >>> -----Original Message----- >>> From: Christopher Schultz [mailto:ch...@christopherschultz.net] >>> Sent: Friday, July 11, 2014 7:50 PM >>> To: Tomcat Developers List >>> Subject: Re: Working tc native build >> >>>> For end users the dependency on the dll is not a big problem, because >>>> Microsoft provides it for redistribution or download. Of course we can't >>>> bundle it due to license incompatibility. >>> >>> Any chance that MSVCR100.dll and friends are provided by recent OSs? On >>> my Windows 8 VM I can see these files in /windows/system32: >>> >>> 07/25/2012 11:06 PM 77,824 msvcirt.dll >>> 07/11/2012 10:01 PM 613,840 msvcp110_clr0400.dll >>> 07/25/2012 11:06 PM 572,416 msvcp60.dll >>> 08/30/2012 08:52 PM 17,888 msvcr100_clr0400.dll >>> 07/11/2012 10:01 PM 856,016 msvcr110_clr0400.dll >>> 07/26/2012 01:26 AM 654,848 msvcrt.dll >>> >>> In my particular case, would we need to bundle anything with tcnative? >> >> I think the above dlls with "_clr0400.dll" are DLLs used by the .Net >> Framework >> only (at leat their descriptions read "Microsoft® .NET Framework"), so I >> don't >> think they can/will be used by C++ applications. >> >> AFAIK, even recent Windows OSes don't contain current Visual C++ Runtime >> libraries by default. Users will need to install the corresponding >> redistributable package - e.g. if you compile with VS 2010, the user will >> need >> to install the "Microsoft Visual C++ 2010 Redistributable Package" [1] (x86 >> or >> x64) which e.g. will install "msvcr100.dll" to the windows\system32 >> directory. >> If you compile with VS 2013, the user will need the "Visual C++ >> Redistributable Packages for Visual Studio 2013" [2] (x86 or x64) which e.g. >> installs "msvcr120.dll", and so on. >> >> However, I don't know why MS doesn't include those runtimes with current >> OSes just like it is done with .Net Framework. (Maybe to reduce >> maintenance when system only needs a specific runtime, but not all, as there >> have been security updates for some C++ Redistributables in the past). >> >> >> [1] http://www.microsoft.com/en-us/download/details.aspx?id=14632 >> [2] http://www.microsoft.com/en-us/download/details.aspx?id=40784 > > FJY, When I just tried to compile a simple C++ DLL (exporting simple > functions to solve a Sudoku) using Visual Studio 2013, the resulting DLL was > 11 KB, and when using Dependeny Walker [1] view the DLL dependencies, it > showed "msvcr120.dll" and "kernel32.dll". > > However, when I change the project configuration (projectname.vcxproj) from > <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" > Label="Configuration"> > (...) > <UseOfMfc>false</UseOfMfc> > </PropertyGroup> > > to > > <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" > Label="Configuration"> > (...) > <UseOfMfc>Static</UseOfMfc> > </PropertyGroup> > > and compile the DLL, it has 83 KB instead of 11 KB, and Dependency > Walker only shows "kernel32.dll", but no VC runtime. I then tested this > with a VC++ project that will create an .EXE, and with the first option, > it will fail to run on a fresh Windows 8 system complaining about > missing msvcr120.dll; whereas with the second option, it will run > without any problems. > > So maybe with this option the necessary functions from the C runtime > have been included in the generated DLL, avoiding a run-time > depencency to the VC++ runtime DLLs. However, I have only little > knowledge about C++ so I cannot really comment on how this setting > (UseOfMfc) works.
Right: you have created a statically-linked DLL (which sounds funny to me) which does not have a dependency on the MSVCRT stuff: its all bundled. I wonder how much more bloated tcnative-1.dll would be if we just statically-linked the DLL with MSVCRT... it might make this pain go away. -chris
signature.asc
Description: OpenPGP digital signature