www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Why my app require MSVCR120.dll?

reply Suliman <evermind live.ru> writes:
I wrote Application in D. That use next components:

"colorize": ">=1.0.5",
"ddbc": ">=0.2.11",
"vibe-d": "~>0.7.26"

On Windows 7 it's work fine. On Windows 10 (clean install) it's 
do not start and require MSVCR120.dll And I can't understand what 
component is pulling this lib as dependence. What would be if I 
am try to port my App to Linux?
Nov 06 2015
next sibling parent reply Kagamin <spam here.lot> writes:
MSVCR is a C runtime. On Linux it will depend on a C runtime too.
Nov 06 2015
parent reply Suliman <evermind live.ru> writes:
On Friday, 6 November 2015 at 13:50:56 UTC, Kagamin wrote:
 MSVCR is a C runtime. On Linux it will depend on a C runtime 
 too.
But which part of my App depend on C runtime?
Nov 06 2015
next sibling parent Benjamin Thaut <code benjamin-thaut.de> writes:
On Friday, 6 November 2015 at 16:21:35 UTC, Suliman wrote:
 On Friday, 6 November 2015 at 13:50:56 UTC, Kagamin wrote:
 MSVCR is a C runtime. On Linux it will depend on a C runtime 
 too.
But which part of my App depend on C runtime?
All of it. Phobos and druntime use the C runtime, that means the language itself depends on the C runtime.
Nov 06 2015
prev sibling parent Timo Sintonen <t.sintonen luukku.com> writes:
On Friday, 6 November 2015 at 16:21:35 UTC, Suliman wrote:
 On Friday, 6 November 2015 at 13:50:56 UTC, Kagamin wrote:
 MSVCR is a C runtime. On Linux it will depend on a C runtime 
 too.
But which part of my App depend on C runtime?
I have an early draft to explain the libraries here: https://bitbucket.org/timosi/minlibd/wiki/libc_vs_libgcc It is the Linux point of view but the basics are the same. It would be hard to write generic patterns that describe all possible language features for all possible target systems. It is easier to put them into a separate library that is common for all apps. Some simple things are math with mixed types and fp math, more complex things are for example thread and exception handling.
Nov 06 2015
prev sibling next sibling parent Cauterite <cauterite gmail.com> writes:
On Friday, 6 November 2015 at 13:16:46 UTC, Suliman wrote:
 On Windows 7 it's work fine. On Windows 10 (clean install) it's 
 do not start and require MSVCR120.dll
D doesn't make particularly heavy use of the C runtime, so there's a good chance you can link against a different C runtime DLL — preferably one that's always available by default like msvcrt.dll. However I'd start by determining why it works fine on 7 and not on 10. It could be that MSVCR120.dll is in your library search path on your Win7 system for some reason, or perhaps the compiler is somehow choosing to link against a different runtime when compiling on Windows 7. If you don't already have tools to inspect this stuff, PeStudio ( https://www.winitor.com/ ) will be helpful — it can tell you all the load-time dynamic linkage for a given executable (among other things).
Nov 06 2015
prev sibling parent reply ponce <contact gamesfrommars.fr> writes:
On Friday, 6 November 2015 at 13:16:46 UTC, Suliman wrote:
 I wrote Application in D. That use next components:

 "colorize": ">=1.0.5",
 "ddbc": ">=0.2.11",
 "vibe-d": "~>0.7.26"

 On Windows 7 it's work fine. On Windows 10 (clean install) it's 
 do not start and require MSVCR120.dll And I can't understand 
 what component is pulling this lib as dependence. What would be 
 if I am try to port my App to Linux?
What compiler are you using?
Nov 06 2015
parent reply Suliman <evermind live.ru> writes:
On Friday, 6 November 2015 at 18:39:49 UTC, ponce wrote:
 On Friday, 6 November 2015 at 13:16:46 UTC, Suliman wrote:
 I wrote Application in D. That use next components:

 "colorize": ">=1.0.5",
 "ddbc": ">=0.2.11",
 "vibe-d": "~>0.7.26"

 On Windows 7 it's work fine. On Windows 10 (clean install) 
 it's do not start and require MSVCR120.dll And I can't 
 understand what component is pulling this lib as dependence. 
 What would be if I am try to port my App to Linux?
What compiler are you using?
I am using DMD. The software was compiled on Windows 7. On Windows 10 I just tried to run it. Is there any way to drop down C-runtime part to get App more portable or maybe to statically link with C lib to be sure that my App will work everywhere?
Nov 07 2015
parent reply thedeemon <dlang thedeemon.com> writes:
On Saturday, 7 November 2015 at 10:03:58 UTC, Suliman wrote:

 I am using DMD.
-m64 or -m32mscoff ?
Nov 07 2015
parent reply suliman <Evermind live.ru> writes:
On Sunday, 8 November 2015 at 04:50:49 UTC, thedeemon wrote:
 On Saturday, 7 November 2015 at 10:03:58 UTC, Suliman wrote:

 I am using DMD.
-m64 or -m32mscoff ?
Without any keys. I use dub for building
Nov 07 2015
parent thedeemon <dlang thedeemon.com> writes:
On Sunday, 8 November 2015 at 05:11:50 UTC, suliman wrote:
 On Sunday, 8 November 2015 at 04:50:49 UTC, thedeemon wrote:
 On Saturday, 7 November 2015 at 10:03:58 UTC, Suliman wrote:

 I am using DMD.
-m64 or -m32mscoff ?
Without any keys. I use dub for building
I suspect your issue is caused by botan library on which vibe-d depends: http://code.dlang.org/packages/botan It says it needs MS linker on Windows and so most probably depends on MSVC runtime. Usually when you build something with DMD without -m64 or -m32mscoff it makes a binary without such dependencies, it uses its own C library (snn.lib) statically linked.
Nov 08 2015