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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to