|
|
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Навеяно этим . Что сие есть? 1) Common Language Runtime Support: Common Language Runtime Support (/clr), Pure MSIL Common Language Runtime Support (/clr:pure), Safe MSIL Common Language Runtime Support (/clr:safe), 2) Runtime Library: Multi-threaded (/MT), Multi-threaded DLL (/MD). Чем различаются 1 и 2? В плане - почему /clr с /MD можно использовать, а вот /clr с /MT низя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 10:02:59 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо) /MD - для многопоточных exe (dll) с динамической линковкой /MT - для многопоточных exe (dll) cо статической линковкой возможно из-за способа сборки (линковки) компонент -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 10:41:47 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо) То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD? Cerebrum /MD - для многопоточных exe (dll) с динамической линковкой /MT - для многопоточных exe (dll) cо статической линковкой возможно из-за способа сборки (линковки) компонент Я тоже так предположил, но хочется познать глубинный смысл особенностей, почему так... Что это за зайцы такие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 10:50:07 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Akh Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо) То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD? вполне возможно, но причем здесь /MD, этот параметр используется при сборке проекта и от этого потом будет зависеть как exe будет работать с dll. Здесь надо изучать мат часть в плане сборки managed и unmanaged кода в одном проекте, тогда глубинный смысл и дойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 11:39:56 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
а так же, если ты собираешь с /MD значит экзешник будет зависеть от msvcrt80.dll и других компонент входящих в vcredist, которые твоему соседу придется себе поставить (если у него VS не устанволена) -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 11:43:50 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Cerebrum Akh Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо) То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD? вполне возможно, но причем здесь /MD, этот параметр используется при сборке проекта и от этого потом будет зависеть как exe будет работать с dll. Здесь надо изучать мат часть в плане сборки managed и unmanaged кода в одном проекте, тогда глубинный смысл и дойдет В том то и дело, что dll возможно разные... Ладно, понятно, /clr -манагед, без /clr - не манагед. Что такое - упровляемость кода (или как правельно)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 11:45:27 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
взято из MSDN Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. вообще об этом много написано, можно в википедии глянуть или погуглить -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 11:50:32 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Cerebrum Фенкс. Тогда такой вариант - managed линкует свою часть реализации Runtime Library С++ (например, выделение памяти необходимое для совместной работы c++/cli и c++ находится в c++/cli), что не позволяет линковаться с ней, и возможно использование только подгружая c++ при запуске программы (откуда выкалупываются используемые средства в программе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 12:06:28 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
clr создает прослойку - метаданные, возможно оттуда -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 12:11:56 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > > Что сие есть? > 1) Common Language Runtime Support: Common Language Runtime Support > (/clr), Pure MSIL Common Language Runtime Support (/clr:pure), Safe MSIL > Common Language Runtime Support (/clr:safe), /clr - генерация смешанного кода MSIL+native, линкуется с msvcm80.dll, которая, в свою очередь, слинкована с msvcr80.dll. /clr:pure - генерация только MSIL кода, линкуется с msvcm80.dll /clr:safe - то же, что и /clr:safe но добавляет информацию для проверки типов. > 2) Runtime Library: Multi-threaded (/MT), Multi-threaded DLL (/MD). /MT - использование мультипоточной статической библиотеки libcmt.lib /MD - использование мультипоточной динамической библиотеки msvcr80.dll > > Чем различаются 1 и 2? В плане - почему /clr с /MD можно использовать, а > вот /clr с /MT низя? По той-же причине - при использовании msvcr80.dll все приложения, слинкованные с ней, работают с единым состоянием CRT - например, используют один хип (это значит, что можно спокойно вызывать malloc/realloc/free в любом месте), одну настройку локали, работа с файлами (причем верхнего[fopen] и нижнего[open] уровня) и т.д. Если же форсировать использование /MT (/NODEFAULTLIB), то нельзя будет смешивать вызовы, зависящие от состояния, сохраненного в самой библиотеке. А таких вызовов - гораздо больше, чем кажется на первый взгляд (часть я уже перечислил). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 13:12:32 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
teras Угумс. Понятно. Тогда еще вопрос: почему на разных компьютерах не запускаются приложения слинкованные с msvcr80.dll? Ведь для достижения этой цели приходиться использовать libcmt.lib, заведомо обрекая на невозможность MSIL-кода. И еще тогда появляется вопрос: названия библиотек времени выполнения: Multi-threaded, Multi-threaded DLL имеют какой либо глубинный смысл, или они просто отражают расширение библиотеки lib или dll, хотя кажется наиболее важным тип библиотеки для managed или не для managed, тем более что они все равно линкуются? Понятно, что в названиях пути господни неисповедимы, но может я чего-то всетаки не догоняю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 13:51:25 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > > Угумс. Понятно. Тогда еще вопрос: почему на разных компьютерах не > запускаются приложения слинкованные с msvcr80.dll? Ведь для достижения > этой цели приходиться использовать libcmt.lib, заведомо обрекая на > невозможность MSIL-кода. Не понял вопроса. Не запускаются приложения зависящие от msvcr80.dll? А libcmt.lib приходится использовать чтобы все таки запустилось? Да? Какое сообщение появляется? На чем приложение написано? Если на C++, нужно еще msvcp80.dll. > > И еще тогда появляется вопрос: названия библиотек времени выполнения: > Multi-threaded, Multi-threaded DLL имеют какой либо глубинный смысл, или > они просто отражают расширение библиотеки lib или dll, хотя кажется > наиболее важным тип библиотеки для managed или не для managed, тем более > что они все равно линкуются? Понятно, что в названиях пути господни > неисповедимы, но может я чего-то всетаки не догоняю? Библиотеки всегда делились по трем параметрам - multi-threaded/single-threaded, static/dll, release/debug. ИМХО, так, как исторически первой версией библиотеки была single-threaded static - она называлась просто libc. Затем ввели поддержку многопоточности и dll, но старые названия сохранили для совместимости, в том числе - и неупоминание static в противоположность dll. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 22:56:08 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
teras Akh wrote: > > Угумс. Понятно. Тогда еще вопрос: почему на разных компьютерах не > запускаются приложения слинкованные с msvcr80.dll? Ведь для достижения > этой цели приходиться использовать libcmt.lib, заведомо обрекая на > невозможность MSIL-кода. Не понял вопроса. Не запускаются приложения зависящие от msvcr80.dll? А libcmt.lib приходится использовать чтобы все таки запустилось? Да? Какое сообщение появляется? На чем приложение написано? Приложение не запущено, поскольку оно не корректно настроено. Повторная установка может исправить эту проблему. На C++. На обычном, я так понял он называется Native. teras Если на C++, нужно еще msvcp80.dll. А это что за зверь? Его тоже нужно подлинковать какой-то опцией? Получаются такие схемы: Native C++: Mutithread Library (libcmt) C++/CLI: /clr:pure or /clr:safe (msvcm) Native C++ + C++/CLI: /clr + Mulithread Library DLL + еще что то ??? (msvcm + msvcr + msvcp) teras > И еще тогда появляется вопрос: названия библиотек времени выполнения: > Multi-threaded, Multi-threaded DLL имеют какой либо глубинный смысл, или > они просто отражают расширение библиотеки lib или dll, хотя кажется > наиболее важным тип библиотеки для managed или не для managed, тем более > что они все равно линкуются? Понятно, что в названиях пути господни > неисповедимы, но может я чего-то всетаки не догоняю? Библиотеки всегда делились по трем параметрам - multi-threaded/single-threaded, static/dll, release/debug. ИМХО, так, как исторически первой версией библиотеки была single-threaded static - она называлась просто libc. Затем ввели поддержку многопоточности и dll, но старые названия сохранили для совместимости, в том числе - и неупоминание static в противоположность dll. Ход мыслей ясен. Фенкс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 10:28:34 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Забыл ответить: teras Не понял вопроса. Не запускаются приложения зависящие от msvcr80.dll? А libcmt.lib приходится использовать чтобы все таки запустилось? Да? Именно так. Этот совет я встречал по всюду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 10:29:47 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
AkhНавеяно этим . Что сие есть? 1) Common Language Runtime Support: Common Language Runtime Support (/clr), Pure MSIL Common Language Runtime Support (/clr:pure), Safe MSIL Common Language Runtime Support (/clr:safe), 2) Runtime Library: Multi-threaded (/MT), Multi-threaded DLL (/MD). Чем различаются 1 и 2? В плане - почему /clr с /MD можно использовать, а вот /clr с /MT низя? /clr попытка микрософта привязять свободный си к платформе микрофоста, сделать фактически некросплатформенный си. в частности, цонечный код может легко конвертиться в си_диез или VBнет. фтопку /clr, ибо с ним гемора не оберешся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 10:58:31 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > >> Если на C++, нужно еще msvcp80.dll. > > А это что за зверь? Его тоже нужно подлинковать какой-то опцией? Реализация стандартной библиотеки C++ (потоки, контейнеры, исключения и т.п). shared vs static выбирается той-же опицей /MD и /MT. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 17:24:31 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
teras Akh wrote: > >> Если на C++, нужно еще msvcp80.dll. > > А это что за зверь? Его тоже нужно подлинковать какой-то опцией? Реализация стандартной библиотеки C++ (потоки, контейнеры, исключения и т.п). shared vs static выбирается той-же опицей /MD и /MT. Posted via ActualForum NNTP Server 1.4 Ну, так вот с /MT (libcmt) она запускается, но использование с c++/cli тогда не возможно. C /MD (msvcr) использование c++/cli возможно, но не запускается на других компьютерах. Так что же получается? Не возможно собрать переносимое приложение Native C++ + C++/CLI? Т.е. managed будет не возможно перенести с 2000 на XP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 17:39:28 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Ну, так вот с /MT (libcmt) она запускается, но использование с c++/cli > тогда не возможно. C /MD (msvcr) использование c++/cli возможно, но не > запускается на других компьютерах. > > Так что же получается? Не возможно собрать переносимое приложение Native > C++ + C++/CLI? Т.е. managed будет не возможно перенести с 2000 на XP? Почему, все можно. Манифест генерируется? vcredist от соответствующей версии VC не помогает? Как не запускается, что происходит, что говорит? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 17:49:31 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
terasПочему, все можно. Манифест генерируется? vcredist от соответствующей версии VC не помогает? Как не запускается, что происходит, что говорит? Ууууу... нафиг. Тут еще огород не пахан. Ладно, спасибо за консультации. Безмерно благодарен. Просветил в VC и cli. Теперь я знаю кучу модных слов. А то все, gcc, gcc... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 18:05:20 |
|
||
|
/clr и иже с ним...
|
|||
|---|---|---|---|
|
#18+
дык наверно с приложением надо эти дллки поставлять, компиль с++/сли с рантайм-дллкой, ложи msvcp80.dll, msvcr80.dll, mscvm80.dll до кучи в папку с приложением (можно этим и не ограничиться, ещё чего-нить пихнуть, убрать всегда успеешь), должно заработать. И по возможности используй визард для создания каркаса приложения, чтобы он за тебя все необходимые пляски с бубном станцевал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 19:34:33 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34929447&tid=2027837]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 456ms |

| 0 / 0 |
