Page 1 of 1

C++ runtime libraries loaded incorrectly

Posted: Wed May 21, 2008 12:46 pm
by Marianne Jacobsen
I have a problem which I do not know whether comes from Ranorex or not. I need a little help.

I'm using the evaluation version 1.4.

By mistake I used the "FindControlName" method instead of accessing the control with "Element.FindChild" method.

By doing this I consistently get an C++ runtime error. By debugging I can see that the error comes from FindControlName call. If I use the Element approach instead I get no error. I'm trying to access a custom .Net control.

I have no C++ code in my project - only C#.

Posted: Wed May 21, 2008 1:56 pm
by Marianne Jacobsen
On Ranorex 1.2 the error is not present.

Posted: Thu May 22, 2008 8:19 pm
by Support Team
I have no C++ code in my project - only C#.
But RanorexNet.dll needs the unmanaged C++ RanorexCore.dll.
This problem can happen if you use a wrong version of the RanorexCore.dll.
Please check the location and version of the RanorexCore.dll.

Jenö
Ranorex Team

Posted: Fri May 23, 2008 9:18 am
by Marianne Jacobsen
I've checked the version number of the ranorexcore.dll file and it says 1.4.0.5 and the file resides in the same directory as my executable.

Can this problem be because I'm trying to test an application which has been compiled with Visual Studio 2008?

Posted: Fri May 23, 2008 10:09 am
by Support Team
FindControlName() uses RanorexSpy.dll which depends on the CRT 8.0 runtime.

Please try to install the VC++ Runtime 8.0 SP1 Redist Package

http://www.microsoft.com/downloads/deta ... 9c36f85647

Michael
Ranorex Team

Posted: Wed May 28, 2008 8:43 am
by Marianne Jacobsen
I've checked all of the dll's and they are the correct version. The application I'm testing has been compiled with Visual Studio 2008 and uses both the 2005 and the 2008 C++ runtime. I've installed both runtimes and the service packs - error is still present.

If I look up the R6034 errorcode on MSDN it says something about a missing manifest file - but how can I know which application is missing the manifest? Would that be the application being tested, my executable or ranorex?

As far as I understand Windows should be able to handle side-by-side sharing of assemblies without much trouble.

Application under test (new version - VS2008 compiled) + Ranorex 1.2 = works
Application under test (old version - VS2005 compiled) + Ranorex 1.2 = works
Application under test (old version - VS2005 compiled) + Ranorex 1.4 = works
Application under test (new version - VS2008 compiled) + Ranorex 1.4 = error

The error might be in my code or test application but how can I identify this and correct it?

Thank your for you help.

Posted: Wed May 28, 2008 11:23 am
by Marianne Jacobsen
I've figured out that I get the error by just spying on the controls (with RanorexSpyPro) in the application under test. Which means that the error must be in either Ranorex or my application under test.

I've tested on several different machines and the error persists.


Edit: I've examined the matter further and it seems that the error also comes if I use the RanorexSpy 1.2 - which tells me that it's my application under test that causes the failure.

Thank you for your time

Posted: Wed May 28, 2008 2:11 pm
by Support Team
Application under test (new version - VS2008 compiled) + Ranorex 1.4 = error
Does the error happen only if you compile the application with VS2008 and you use the function FindControlName?

Is this correct?

What happens if you compile with VS2008 but you do not use the function FindControlName?

Jenö

Ranorex Team

Posted: Wed May 28, 2008 3:06 pm
by Marianne Jacobsen
It does fail consistently with the FindControlName method but I've seen it fail also when I'm not using FindControlName (eg. Form.Element.FindChild).

I will try to get the developers of the test application to compile a VS2005 version which is exactly the same as the one compiled in VS2008 - just to see if the error really has something to do with Visual Studio 2008.

Posted: Fri May 30, 2008 1:10 pm
by Marianne Jacobsen
I've solved the problem with the C++ 2008 runtime.

It was the manifest that caused the problem. I made a manifest for RanorexCore.dll, RanorexSpy.dll and one for my own application. Using these manifests I no longer get the error.

The manifests all look like this:

Code: Select all

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.MFC' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
    </dependentAssembly>
  </dependency>

  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
Anybody else who has problems with testing an application build under Visual Studio 2008 may have luck using this manifest.

Thank you for your time.