R6034: приложение попыталось загрузить библиотеку времени выполнения C неправильно - PullRequest
4 голосов
/ 16 июня 2010

Я получаю эту ошибку R6034 при запуске программы, которую я только что обновил (и очистил) из VS2003 -> VS2008.Чтобы быть более точным:

"R6034: приложение попыталось загрузить библиотеку времени выполнения C неправильно."

Кажется, что произошло почти в том же местевсе время при беге.Я понятия не имею, почему, но я попробовал некоторые предложения, которые я нашел при поиске в Google.Например, добавление dll msvc, но это не сработало.

Любая справка о том, почему возникает эта ошибка, была бы полезна.Спасибо

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Начиная с Visual Studio 2005, вы должны ссылаться на C Run Time, используя файл манифеста.Обращение к библиотекам DLL путем простого помещения их в путь приведет к указанной выше ошибке.

Файл манифеста будет выглядеть следующим образом:

<?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.VC80.DebugCRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

Вы можете использовать команду MT для интеграции манифестав качестве ресурса в приложении, но это не обязательно.Кроме того, разрешено иметь манифест помимо вашего приложения (как MYAPP.EXE.MANIFEST).

0 голосов
/ 17 июня 2010

Следующая тестовая программа:

#include <iostream>
#include <crtdefs.h>

void main()
{
std::cout << "Hello World" << std::endl;
}

Скомпилировано с использованием этих команд (Visual Studio 2005):

cl /EHsc /MD /c test.cpp
link test.obj

Создайте исполняемый файл (TEST.EXE) и файл манифеста (TEST.EXE.MANIFEST), который выглядит следующим образом:

<?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.VC80.CRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

Я не пробовал это с VS2008, но, вероятно, это должно сработать.

Надеюсь, этого достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...