Мульйоны RTL-компиляций в C:\WINDOWS\WinSxS\

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 3 дек 2010.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Расскажите пожалуйста, что это за такая директория, и как это вообще работает?

    Суть проблемы: приложение было скомпилено на одной студии с динамической линковкой си-рантайма и MFC. Будучи запущеным на компе, на котором установлена другая студия, приложение цепляет другой рантайм, и, судя по всему из-за этого, падает на определенных действиях. Подкладывание оригинального рантайма в директорию приложения не помогает - приложение все равно цепляет рантайм другой студии.

    Вот тут: http://msdn.microsoft.com/en-us/library/ms682586(v=VS.85).aspx говорится, что в любом случае поиск DLL-ек должен начинаться с директории приложения, но наблюдения показывают, что это не так. Как тут быть? Я нипанимат :dntknw:
     
  2. 0x6b65

    0x6b65 Забанен

    Публикаций:
    0
    Регистрация:
    8 окт 2009
    Сообщения:
    92
    Вместе с переименованным манифестом или только dll-ки?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    0x6b65

    Только что посмотрел в директорию, где установлено приложение. Манифеста там нет (никакого). Можно поподробнее, как все правильно сделать? :)
     
  4. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Как всегда у MS - через жoпy.
     
  5. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    _DEN_
    Студия в ресурсы экзешника кладет манифест, где прописывана нужная ему версия рантайма. Именно эта версия рантайма смотрится в WinSxS. Просто из папки программы рантайм не грузится.
    Самое простое решение - линковать в статику. Из прочих вариантов - можно подкладывать в папку с экзешником name.exe.manifest - он будет заменять собой манифест из ресурсов. А вот что в нем прописывать и что им можно сделать - это уже не ко мне.
     
  6. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    _DEN_
    Если манифеста у модуля нет (ни отдельного, ни в ресурсах), то импортируемые DLL не должны подниматься из SxS. Возможно, эту RTL импортирует другой модуль (с манифестом), а ваш - просто подхватывает уже загруженную.