Re: When were scanf_s functions introduced?



Thanks for the useful answer. I read something similar in MS "
Deployment Examples" section in MSDN.

A few more questions:
(1) Why is the CRT static object library libcmt.dll about 10 times larger than
the CRT dll MSVCR80.dll? Is it because libcmt.dll contains other functions included
in other dlls already on the client?

(2) The following example shows clearly how to build a proper C++ Setup/Deployment
project:
http://msdn2.microsoft.com/en-us/library/ms235317(VS.80).aspx
so that it will include MSVCR80.dll (and other dependencies in my application) if I build
my app with /MD. Say I have several different apps to deploy. What is the best approach
for packaging/information in terms of Setup/Deployment projects. I clearly don't want
to have the same client have to dnld larger files each time (including MSVCR80.dll) if
they have already installed another app with the necessary dependency. How should this
be managed? Two different versions of deployment projects ? Ask the user before
downloading the installation?

(3) In terms of dependencies, for example if I run :
dumpbin /dependents cathash.exe
...
WINTRUST.dll
CRYPT32.dll
KERNEL32.dll
ADVAPI32.dll
MSVCR80.dll

I know that most of my users won't have MSVCR80.dll .. hence need to include that
in my Merge Modules project. However, what about other basic dlls like Crypt32.dll?
I gather that I need to read the MSDN docs on those system dlls and look at any OS
version dependencies? And if the fn' I wish to deploy is not available in the version of
the dll on the target system, see if the system dll is redistributable??
aka similar discussion to :
http://msdn2.microsoft.com/en-us/library/8kche8ah(VS.80).aspx

(4) Say the OS (Win98) has the system dll functonality required and so I only need
to add MSVCR80.dll into my deploy project. Does the target OS (98) need any other
capability to run the Setup/Deployment exe once I've built it in VS 2005? I noticed the
use of "assemblies" in the MSDN Setup/Deploy doc above .. this doesn't mean that
the target OS needs .NET runtime to run Setup project??

Thanks,
- Mitch

"Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx> wrote in message news:u%23b84QLRGHA.336@xxxxxxxxxxxxxxxxxxxxxxx
Yes, that's about how static linking works. There are a few downsides though:

- Increased memory usage (if you run two apps with the CRT static linked instead of two apps with the CRT dynamic
linked, then you might be increasing physical commit as the CRT code inside the DLL could be copy-on-write shared
cross process while the static linked CRT code can't be shared in memory between different .exes (although it could be
for different processes running from the same .exe on disk).
- Requires you to recompile your app if there is a security patch for the CRT and you static linked to an affected
function (instead of just deploying another CRT DLL).
- When working with multiple binaries that link to the CRT, you may actually end up saving space by linking to the DLL
version if the CRT code is duplicated enough times.

If you are just making a simple, small standalone app, then static linking is probably a good idea. For nontrivial
apps I would go with the DLL route though.

"Mitch Gallant" <jensigner@xxxxxxxxxxxxxxxx> wrote in message news:uMECVNIRGHA.4344@xxxxxxxxxxxxxxxxxxxxxxx
The DLL version required to support security-enhanced fucntions is
MSVCR80.dll which is 612 kb in size.

I relinked statically (/MT) which statically links in libcmt.lib (about 7.4 Mb).
However the resultant apps (which are not very big) amount to
about 100 kb ; e.g. this file hasher utility
http://www.jensign.com/hash/index.html

I don't have a good understanding of how static linking works with obj .dll
libraries but I gather it just extracts the code from the static CRT library that
is referenced in the application (hence my resultant code is still small ) ?

Thanks,
- Mitch

"Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx> wrote in message news:eVoz2bHRGHA.336@xxxxxxxxxxxxxxxxxxxxxxx
I would just redistribute the DLL version of the CRT. VC2005 comes with a prepackaged installer and merge modules
for it, I believe.

"Mitch Gallant" <jensigner@xxxxxxxxxxxxxxxx> wrote in message news:OJnLX3GRGHA.196@xxxxxxxxxxxxxxxxxxxxxxx
Thanks. So I guess I need to recompile with /MT to static
link code into my application to ensure backward compatiblity.
- Mitch

"Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx> wrote in message news:eEh$qqGRGHA.4572@xxxxxxxxxxxxxxxxxxxxxxx
Yes unless somebody else has already installed MSVCR80.dll.

"Mitch Gallant" <jensigner@xxxxxxxxxxxxxxxx> wrote in message news:uS1GA6FRGHA.256@xxxxxxxxxxxxxxxxxxxxxxx
(a bit rusty on VC++ here ..)
I was looking at my compile options in VS 2005 and the /MD switch
is used for release by default. Does this mean that if I compile my
C code in VS 2005 with the default /MD compile switch, and specify
scanf_s() functions, the target platform will need updated dll (MSVCR80.dll)
with those functions since the CRT is not statically linked into my application?
http://msdn2.microsoft.com/en-us/library/abx4dbyh.aspx
Thanks,
- Mitch

"Skywing" <skywing_NO_SPAM_@xxxxxxxxxxxxxxxxxxx> wrote in message news:uVxeG5ERGHA.4344@xxxxxxxxxxxxxxxxxxxxxxx
They ship with the VS2005 CRT (and probably later CRTs). They were not present in the VS2003 (or earlier) CRTs.

"Mitch Gallant" <jensigner@xxxxxxxxxxxxxxxx> wrote in message news:uNz0KsERGHA.4960@xxxxxxxxxxxxxxxxxxxxxxx
When were the security-enhanced functions, like scanf_s, sscanf_s etc. introduced?
I noticed that they are not included in the PSDK April 2005 MSDN documentation,
but are included in VS 2005 docs.
- Mitch


















.



Relevant Pages

  • Re: When were scanf_s functions introduced?
    ... My knowledge of doing complicated MSI setup apps is fairly limited, ... installers, one that is a "full install" (includes everything and will be ... then the amount of space for the CRT ... the CRT dll MSVCR80.dll? ...
    (microsoft.public.platformsdk.security)
  • Re: When were scanf_s functions introduced?
    ... one that is a "web install" (checks dependencies and only downloads those that are missing, ... then the amount of space for the CRT installer is probably not going to matter much and ... the CRT dll MSVCR80.dll? ... Say I have several different apps to deploy. ...
    (microsoft.public.platformsdk.security)
  • Re: Problem with msvcrt60 vs. msvcr71 vs. strdup/free
    ... > Believe it or not I do not get a crash here. ... Since this is a different CRT, ... > msvcrt and another DLL is using msvcr71. ... E.g. malloc use a pointer to the free list in the heap, ...
    (comp.lang.python)
  • A solution to the MSVCRT vs MSVCR71 problem?
    ... Compile with your compiler or choice, never mind which CRT are used. ... DLL file. ... redirects CRT calls to msvcrt.dll or any other CRT of choice. ...
    (comp.lang.python)
  • Re: error R6031
    ... When called _CRT_INIT on initialization, in crtdll.c at line: ... The fact that you have what appears to be a statically-linked CRT in a DLL (I'd suggest ... debugger was awakened by an interrupt. ...
    (microsoft.public.vc.mfc)