arctork1

Hi,

I have been writing some 2D DirectX 10 tutorials but I can't seem to get them to work on other vista machines that don't have visual studio installed on them. I have already tried for assistance over at gamedev.net but had no luck.

I started out with an error about the exe's side by side configuration being incorrect. I did a little research online and found that the solution to that problem was to set the setting for the manifest being embedded to "no". Which then got me past that error and on to some missing files errors. Initially it asked for d3dx10_35.dll, which was solved by installing the latest dx redist package. Then I got another error about msvcr80.dll missing (NOTE: not MSVCRT80.dll) which after installing the vc++ redist packages (including sp1) still isn't working.

Now after doing all this and it still not being solved I did some research on the microsoft team blog and found that the idea behind the manifest is to point to / kind of say where / what files are needed (dependancies). Though when the embed manifest setting is yes, I get the side by side configuration error problem and when I say no, I get the missing msvcr80.dll problem.

So I am not sure where to go next I have tried several machines with vista and I can't find any solution. Does anyone have any suggestions

Your assistance is greatly appreciated.



Re: Visual C++ General Errors on machines without visual studio / missing msvcr80.dll / manifest problems

crescens2k

OK, first of all, the file name for the VC8 CRT is msvcr80.dll so that is fine, that is saying that it isn't finding the CRT for some reason.

First of all I will ask the biggest question, is what it asking for msvcr80d.dll, ie are you linking against the debug runtime. The debug runtime is what it uses by default if you build the project as the debug build. For various reasons, the debug runtime isn't distributed and you are not allowed to distribute it yourself. So make sure you are linking against the release runtime.

Secondly, if you are building a release version could you make sure you are using the manifest correctly. If you are not embedding the manifest into the executable, you have to make sure you copy both the executable and the manifest together. So as an example, if your program is named test.exe then there should be a manifest named test.exe.manifest, you have to make sure they are together in the same directory.

Here is an example of a manifest built for a sample program.

< xml version="1.0" encoding="UTF-8" standalone="yes" >
<assembly xmlns="urnTongue Tiedchemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urnTongue Tiedchemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21004.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

First of all, don't worry too much about it being VC9 since that makes no difference here. The important thing to look at is the name attribute of assembltIdentity. If it is Microsoft.VC80.DebugCRT instead of Microsoft.VC80.CRT then it is linking against the debug runtime so something has gone weird. Next check the version against installed versions, if you don't have it installed then make sure you have a version redirect so it points to a later one if necessary.

But if none of that works then paste your manifest here and then we can try to help you.






Re: Visual C++ General Errors on machines without visual studio / missing msvcr80.dll / manifest problems

arctork1

Hi,

Thanks for the reply. I am building a release version and my manifest is below ... it seems fine though maybe you will notice something I didn't.

< xml version="1.0" encoding="UTF-8" standalone="yes" >
<assembly xmlns="urnTongue Tiedchemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

I am unsure about your next thing to check, about the versions. What is a version redirect I also have vs2008 beta 2 on my system ... could this be the problem if I am trying to use 2005 to build the projects

I even tried using 2008 beta 2 to compile a version with the manifest and without and still had the same errors ... only instead of msvcr80.dll it was 90.

Thanks for your assistance.





Re: Visual C++ General Errors on machines without visual studio / missing msvcr80.dll / manifest problems


Re: Visual C++ General Errors on machines without visual studio / missing msvcr80.dll / manifest problems

Bite Qiu - MSFT

arctork1 wrote:

<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86"

Hi,

8.0.50727.762 is the version number for SP1 while non-SP1 version of visual c++ 2005 is(usually) 8.0.50727.42, but from the link you refered for download vc++ redist packages, it seems you are downloading wrong version(non-sp1) of redistributable package, download and install Visual C++ 2005 SP1 Redistributable Package should fix the problem.

I am unsure about your next thing to check, about the versions.

I can not speak for crescens2k, but I think he meant the same as I described above.

By the way, set the setting of embedded manifest to no is not a good idea, it is highly recommemded to embed manifest to the generated module, and keep a seperate file for application manifest does not bring any benefit but introduce troubles when maintain it.

hope it helps

rico