"application configuration is incorrect" and "side-by-side configuration is incorrect" running VS2008 64-bit debug build

Я работаю на 64-битной ОС windows 7 ultimate machine VS2008 с 64-битным аддоном.

Я успешно собираю свои проекты как в 32, так и в 64-битном, отладочном и релизном конфиге. 64-битная отладка не запускается; она выдает ошибку:

Unable to Start program xxx Это приложение не удалось запустить из-за неправильной конфигурации приложения. Просмотрите файл манифеста на предмет возможных ошибок. Переустановка приложения может устранить эту проблему. Для получения дополнительной информации см. журнал событий приложения.

Я запустил программу просмотра зависимостей. Из перераспределяемого пути C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT Я добавил Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d.sll в папке bin\debug моего решения.

Наконец, в dependency walker не осталось ни одной желтой метки (отсутствующие файлы), но все равно он выдавал ошибки типа:

Error: Не найдена хотя бы одна требуемая неявная или переадресованная зависимость. Ошибка: По крайней мере, один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в неявно зависимом модуле. Ошибка: Найдены модули с разными типами процессоров. Ошибка: Информация о конфигурации Side-by-Side в "e:\xyz.EXE" содержит ошибки. Приложению не удалось запуститься, потому что его конфигурация side-by-side неверна. Пожалуйста, посмотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для получения более подробной информации (14001).

В 32-битном манифесте написано:

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

В то время как в 64-битном отладочном манифесте написано:

 <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>

Я не могу понять, почему отладочная 32-битная сборка запускается успешно?

Пожалуйста, помогите мне, так как я уже проверил много вопросов, но не нашел никакого приемлемого решения.

7
задан ivan_pozdeev 20 August 2018 в 20:13
поделиться