#For mingw and cygwin, can only mingw use msvcrt*.dll? and can only cygwin use cygwin1.dll?
1 messages · Page 1 of 1 (latest)
Exactly.
where is msvcrt*.dll?
C:\windows\system32 usually,
cf https://en.m.wikipedia.org/wiki/Microsoft_Windows_library_files
I think there's a mistake in the docs. msvcrt*.dll matches only one file as far as I know. It's either msvcrt.dll (internal C runtime) or msvcr*.dll (redistributable runtimes from Visual Studio, e.g. msvcr100.dll, msvcr110.dll).
my@DESKTOP MINGW64 /c/Windows/System32
$ find . -type f -iregex ".*msvcrt.*\.dll"
./msvcrt.dll
my@DESKTOP MINGW64 /c/Windows/System32
$ cd "/e/Windows Kits/10"
my@DESKTOP MINGW64 /e/Windows Kits/10
$ find . -type f -iregex ".*msvcrt.*\.dll"
my@DESKTOP MINGW64 /e/Windows Kits/10
$ cd "/e/software/Microsoft Visual Studio/2022/Community"
my@DESKTOP MINGW64 /e/software/Microsoft Visual Studio/2022/Community
$ find . -type f -iregex ".*msvcrt.*\.dll"
my@DESKTOP MINGW64 /e/software/Microsoft Visual Studio/2022/Community
$ cd /e/software/msys2
my@DESKTOP MINGW64 /e/software/msys2
$ find . -type f -iregex ".*msvcrt.*\.dll"
I only find things about msvcrt in the "/c/Windows/System32"
Yes, msvcrt.dll is the internal C runtime, it's a system component that has been disconnected from Visual Studio for a long time.
does msvcrt.dll have version iteration?
The file contains a version number, but it correlates with the Windows version.
You can see (some) differences between the msvcrt.dll of various Windows versions described here: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/3df73c06315b53900395af9667eae7a1b8dc0e01/tree/mingw-w64-crt/lib-common/msvcrt.def.in
does mingw-w64 have official docs?
these are not my ideal official docs website. it is ugly.
Documentation is never pretty, no matter how you dress it up.
mingw is more poor than cygwin docs. how do you learn mingw?
By learning from msvc. Mingw strives to complete the win32 API that Windows uses. Thus you can use Microsoft's documentation for that.
Is "msvcr" UCRT?
as far as I know, those are two different C runtime.
@cloud monolith please send me a link for your start point learning msvc.
Google is your friend.
No, I wasn't trying to refer to Ucrt here at all, just the different Msvc* runtimes.
I'm just asking what the difference
Are the dlls named different or what?
Is it "ucrtbase.dll" ?
Is what ucrtbase.dll though?
Ucrt is mostly in ucrtbase.dll and a bunch of api-ms-win-*.dll files.
Runtimes used by default with various versions of Visual Studio are mostly in msvcr*.dll and msvcp*.dll.
And these are the same runtimes that msys2 "mingw64" is using?
Not unless you explicitly use one. You can build a mingw-w64 toolchain that defaults to one of the Visual Studio runtimes, but our "mingw32"/"mingw64" toolchains default to the internal Windows runtime, msvcrt.dll.
And how does UCRT64 supply them?
As in, it's Microsoft code, is it downloaded from a Microsoft server or something?
It's installed by default on newer Windows versions.
And on older? What does msys2 do?
MSYS2 doesn't do anything.
Ucrt can be optionally installed by the user or admin on some older Windows versions.
So what happens if I try using ucrt64 on a system that doesn't have it?
*in msys2
Something like this I guess.
@visual cradle if your gonna ask so many questions you might want to use the text channels instead
good idea.
I actually like that we don't have this in the text channels. I don't know if the help forum is the best place either though.
This statement confuse me very much:
- one application only have one memory space?
- one application can not directly access the contents of a DLL, rather than a single copy of a DLL?
- multiple application can not directly access the contents of a DLL, rather than a single copy of a DLL?
- Kind of yes. The operating system provides a virtual memory space, often a different one for each process. Memory space means all possible memory addressed from 0 to the maximum pointer value of the platform (so around 2^64 bytes on a usual 64-bit system). Usually only a small part of the memory space is actually usable. Not everything in the virtual memory corresponds to RAM, there are also mapped files from the disk, there is paging to disk ("swap").