Jason Doucette

When I converted a VC++ 2003 Standard project over to VC++ 2005 Express, one of the warnings it gave was:

"Due to the requirement that Visual C++ projects produce an embedded (by default) Windows SxS manifest, manifest files in the project are automatically excluded from building with the Manifest Tool. It is recommended that the dependency information contained in any manifest files be converted to "#pragma comment(linker,"")" in a header file that is included from your source code. If your project already embeds a manifest in the RT_MANIFEST resource section through a resource (.rc) file, the line will need to be commented out before the project will build correctly."

Can anyone enlighten me on what this means

Also, I notice when I compile, the output shows: What is the manifest

Code Snippet

1>Generating Code...

1>Compiling resources...

1>Compiling manifest to resources...

1>Linking...

1>Embedding manifest...




Re: Visual C++ Express Edition embedded Windows SxS manifest = ?

crescens2k

In an attempt to stop versioning problems of DLLs, Microsoft introduced side by side assemblies. This is a method of storing multiple versions of the libraries in a way that it can find all versions, use these versions and have no problems copying new versions onto the computer if they are updated.
The way an application tells windows which libraries it needs and what versions it requires is by the manifest. This is then used by windows to load the required libraries.
So a manifest is a way to tell windows which libraries you need to load and what versions you need. This is only required by SxS so right now you will only really find CRT, and maybe MFC and ATL if you use them, but if you use side by side assemblies then you will need to use this.





Re: Visual C++ Express Edition embedded Windows SxS manifest = ?

Jason Doucette

Ok, thanks for the explanation.

I think the conversion warning doesn't apply to me, since I have never done anything with manifests, I didn't even know what they were until you just told me.

When I deploy my application, I am going to link all functions from DLLs right into the .EXE, to ensure it'll work on any target machine, regardless if they have the right libraries or not (especially for the new secure CRT libraries, which I believe a lot of computers don't naturally have), by forcing the libraries to be included directly into my application. It will increase its size, but I think the benefits of not worrying about DLLs is worth it. I'll know more when I get into beta; this is all new to me.