Переключение версий CRT в VC9
От: cencio Украина http://ua-coder.blogspot.com
Дата: 16.01.09 21:44
Оценка: 16 (2)
#Имя: FAQ._BIND_TO_CURRENT_VCLIBS_VERSION
Здравствуйте, Kingofastellarwar, Вы писали:

K>Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу, что версия старая т.е. 9.0.21022.8.


автоматом не переходит нужно определять
#define _BIND_TO_CURRENT_VCLIBS_VERSION 1;

#define _BIND_TO_CURRENT_CRT_VERSION 1
#define _BIND_TO_CURRENT_ATL_VERSION 1
#define _BIND_TO_CURRENT_MFC_VERSION 1
#define _BIND_TO_CURRENT_OPENMP_VERSION 1


или сразу для всех либ
#define _BIND_TO_CURRENT_VCLIBS_VERSION 1


подробней http://msdn.microsoft.com/en-us/library/cc664727.aspx (http://msdn.microsoft.com/ru-ru/library/cc664727.aspx)

K>Как компилер вообще выбирает какую версию линковать, ведь место для lib файлов не дифференцируется версиями. каша какая-то.

компайлер не выбирает, это прописано в манифесте
Re[2]: Переключение версий CRT в VC9
От: rastoman  
Дата: 20.01.09 07:42
Оценка: +1 -1
Здравствуйте, Vain, Вы писали:

V>Это и не надо, lib файл лишь говорит, что надо загрузить dll X и проимпортить функции Y1,Y2,..,YN. А при запуске приложения загрузчик ОС лезит в екзешник, читает манифест и если манифест есть, загружает версию dll из WinSxS каталога. Тоже делает функция LoadLibrary если указан относительный путь.

Откройте для себя ключ компилятора — /MT (/MTD). И не нужны будут никакие DLL, т.к. CRT будет прилинкован статически.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Переключение версий CRT в VC9
От: Kingofastellarwar Украина  
Дата: 16.01.09 20:20
Оценка:
Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу, что версия старая т.е. 9.0.21022.8.
Как компилер вообще выбирает какую версию линковать, ведь место для lib файлов не дифференцируется версиями. каша какая-то.
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Переключение версий CRT в VC9
От: Vain Россия google.ru
Дата: 16.01.09 20:59
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу, что версия старая т.е. 9.0.21022.8.

K>Как компилер вообще выбирает какую версию линковать, ведь место для lib файлов не дифференцируется версиями. каша какая-то.
Это и не надо, lib файл лишь говорит, что надо загрузить dll X и проимпортить функции Y1,Y2,..,YN. А при запуске приложения загрузчик ОС лезит в екзешник, читает манифест и если манифест есть, загружает версию dll из WinSxS каталога. Тоже делает функция LoadLibrary если указан относительный путь.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Переключение версий CRT в VC9
От: Sergey Россия  
Дата: 16.01.09 21:27
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу, что версия старая т.е. 9.0.21022.8.

K>Как компилер вообще выбирает какую версию линковать, ведь место для lib файлов не дифференцируется версиями. каша какая-то.

Макрос какой-то был, что-то вроде _BIND_TO_CURRENT_CRT
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Переключение версий CRT в VC9
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 17.01.09 09:37
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу, что версия старая т.е. 9.0.21022.8.

K>Как компилер вообще выбирает какую версию линковать, ведь место для lib файлов не дифференцируется версиями. каша какая-то.

Катеорически рекомендую прочесть пост VC Runtime Binding... и комментарии к нему.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: Переключение версий CRT в VC9
От: MasterZiv СССР  
Дата: 17.01.09 10:39
Оценка:
Kingofastellarwar пишет:

> Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа

> 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу,
> что версия старая т.е. 9.0.21022.8.

Чего, таки превращается винда в юних помаленьку ?
Осталось только слэш развернуть ...
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Переключение версий CRT в VC9
От: fdn721  
Дата: 20.01.09 03:57
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Kingofastellarwar пишет:


>> Если на VC9 поставить SP1 то этот создаст новую версию CRT что-то типа

>> 9.0.3xxxx.x, а как на неё переключиться? В манифесте внутри exe я вижу,
>> что версия старая т.е. 9.0.21022.8.

MZ>Чего, таки превращается винда в юних помаленьку ?

MZ>Осталось только слэш развернуть ...

Каким местом? Что-то я не припомню, что-бы в Unix можно было бы поставить 2 версии QT4 и часть приложений заставить работать на первой, а часть на второй.
Re[3]: Переключение версий CRT в VC9
От: MasterZiv СССР  
Дата: 20.01.09 16:32
Оценка:
fdn721 пишет:

> Каким местом? Что-то я не припомню, что-бы в Unix можно было бы

> поставить 2 версии QT4 и часть приложений заставить работать на первой,
> а часть на второй.

Часть ты не можешь заставить работать и на винде.
А вот в Юниксах одному приложению работать с одной версией CRT, а другому — с
другой — вполне возможно.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.