"C Run-Time Error R6034"(转)

 

Regarding "C Run-Time Error R6034"

 

Microsoft's recommendation is very confusing. That is, it recommends to include a manifest file and to re-compile the project.

I recently had a problem with 'R6034' error message even with a manifest file already included!

In my case, Visual Studio 2005 compiles and builds a DEBUG-configuration of some DLL. But, as soon as I try to start an
application that uses that DLL the loader can't load the DLL and displays an error message with error code 'R6034'.

It happened because two Run-Time DLLs were referenced in my DLL by some reason! As soon as I looked
inside of my DLL I found two strings: 'msvcr80d.dll' and 'msvcr80.dll', and the 2nd one is the reason of that run-time problem.

In order to resolve the problem I added 'msvcrt.lib' to the list of ignored libraries for DEBUG-configuration:

[Configuration Properties] -> [Linker] -> [Input] -> 'Ignore Specific Library' - msvcrt.lib  


==============================================================
C Run-Time Error R6034

Error Message

An application has made an attempt to load the C runtime library without using a manifest. This is an unsupported way to load Visual C++ DLLs. You need to modify your application to build with a manifest. For more information, see the "Visual C++ Libraries as Shared Side-by-Side Assemblies" topic in the product documentation.

Applications must use a manifest to load the C runtime library. For more information, see Visual C++ Libraries as Shared Side-by-Side Assemblies and Manifest Generation in Visual Studio.

In release builds, the diagnostic message reads: "An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information."

To correct this error

  • Rebuild your application with a manifest. Building an application with Visual Studio automatically puts the manifest into the resulting EXE or DLL file. If you are building at the command line, use the mt.exe tool to add the manifest as a resource. Use resource ID 1 if building an EXE, 2 if building a DLL. For more information, see How to: Embed a Manifest Inside a C/C++ Application.

 

 

Reference:
http://msdn.microsoft.com/en-us/library/ms235560%28VS.80%29.aspx 

posted on 2010-07-18 23:54  huihui-热带鱼  阅读(1648)  评论(0编辑  收藏  举报