powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / /clr и иже с ним...
20 сообщений из 20, страница 1 из 1
/clr и иже с ним...
    #34924005
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 низя?
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924113
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо)
/MD - для многопоточных exe (dll) с динамической линковкой
/MT - для многопоточных exe (dll) cо статической линковкой

возможно из-за способа сборки (линковки) компонент
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924134
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо)

То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD?
Cerebrum
/MD - для многопоточных exe (dll) с динамической линковкой
/MT - для многопоточных exe (dll) cо статической линковкой

возможно из-за способа сборки (линковки) компонент


Я тоже так предположил, но хочется познать глубинный смысл особенностей, почему так... Что это за зайцы такие?
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924356
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо)

То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD?

вполне возможно, но причем здесь /MD, этот параметр используется при сборке проекта и от этого потом будет зависеть как exe будет работать с dll.

Здесь надо изучать мат часть в плане сборки managed и unmanaged кода в одном проекте, тогда глубинный смысл и дойдет
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924375
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так же, если ты собираешь с /MD значит экзешник будет зависеть от msvcrt80.dll и других компонент входящих в vcredist, которые твоему соседу придется себе поставить (если у него VS не устанволена)
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924385
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum Akh Cerebrum/clr - это для .net framework, т.е для managed кода (если не прав спецы поправят я в net не особо)

То бишь, если я собираю на своей машине и у меня работает (2000), несу к соседу (ХР), а у него не пашет, значит у меня стот framework, а у него нет? Только из-за этого, или еще у нас могут не совпадать /MD?

вполне возможно, но причем здесь /MD, этот параметр используется при сборке проекта и от этого потом будет зависеть как exe будет работать с dll.

Здесь надо изучать мат часть в плане сборки managed и unmanaged кода в одном проекте, тогда глубинный смысл и дойдет

В том то и дело, что dll возможно разные...

Ладно, понятно, /clr -манагед, без /clr - не манагед. Что такое - упровляемость кода (или как правельно)?
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924421
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
взято из 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.
/clr
Creates metadata for your application that can be consumed by other CLR applications, and allows your application to consume types and data in the metadata of other CLR components.

For more information, see:

Mixed (Native and Managed) Assemblies

How To: Migrate to /clr

/clr:pure
Produces an MSIL-only output file with no native executable code, although it can contain native types compiled to MSIL.

For more information, see Pure and Verifiable Code.

/clr:safe
Produces an MSIL-only (no native executable code) and verifiable output file. /clr:safe enables verification diagnostics (PEVerify Tool (Peverify.exe)).

For more information, see Writing Verifiably Type-Safe Code.

/clr:oldSyntax
Enables Managed Extensions for C++ syntax, the original Visual C++ syntax for CLR programming.

Note   Managed Extensions for C++ syntax is deprecated in Microsoft Visual C++  2005 . You should use /clr:oldSyntax only if you are maintaining a Visual C++ application that uses Managed Extensions for C++. If you are developing a new application, use the updated syntax; see New Language Features in Visual C++ for more information.

If you have a Managed Extensions for C++ application, you can begin to port your project to use the new syntax; see Porting and Upgrading Programs for more information.

/clr:noAssembly
The noAssembly option specifies that an assembly manifest should not be inserted into the output file. By default, the noAssembly option is not in effect.

Note   The noAssembly option is deprecated in Visual C++  2005 . Use /LN (Create MSIL Module) instead. For more information, see Deprecated Compiler Options in Visual C++  2005 .

A managed program that does not have assembly metadata in the manifest is called a module. The noAssembly option can be used only to produce a module. If you compile with /c (Compile Without Linking) and /clr:noAssembly, then specify the /NOASSEMBLY (Create a MSIL Module) option in the linker phase to create a module.

Before Visual C++  2005 , /clr:noAssembly implied /clr. However, /clr now also supports /clr:oldSyntax, so you must specify one /clr form when you specify /clr:noAssembly. For example, /clr:noAssembly /clr creates a module using the new Visual C++ CLR syntax and /clr:noAssembly,oldSyntax creates a module using Managed Extensions for C++.

Before Visual C++  2005 , /clr:noAssembly required /LD. /LD is now implied with you specify /clr:noAssembly.

/clr:initialAppDomain
Allows a Visual C++ application to run on version  1  of the common language runtime. If you use initialAppDomain, then you may see some of the problems discussed in Knowledge Base article Q309694. 

вообще об этом много написано, можно в википедии глянуть или погуглить
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924501
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum

Фенкс. Тогда такой вариант - managed линкует свою часть реализации Runtime Library С++ (например, выделение памяти необходимое для совместной работы c++/cli и c++ находится в c++/cli), что не позволяет линковаться с ней, и возможно использование только подгружая c++ при запуске программы (откуда выкалупываются используемые средства в программе).
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924531
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clr создает прослойку - метаданные, возможно оттуда
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34924819
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34925015
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teras

Угумс. Понятно. Тогда еще вопрос: почему на разных компьютерах не запускаются приложения слинкованные с msvcr80.dll? Ведь для достижения этой цели приходиться использовать libcmt.lib, заведомо обрекая на невозможность MSIL-кода.

И еще тогда появляется вопрос: названия библиотек времени выполнения: Multi-threaded, Multi-threaded DLL имеют какой либо глубинный смысл, или они просто отражают расширение библиотеки lib или dll, хотя кажется наиболее важным тип библиотеки для managed или не для managed, тем более что они все равно линкуются? Понятно, что в названиях пути господни неисповедимы, но может я чего-то всетаки не догоняю?
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34926579
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34927147
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

Ход мыслей ясен. Фенкс.
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34927154
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл ответить:

teras
Не понял вопроса. Не запускаются приложения зависящие от msvcr80.dll? А
libcmt.lib приходится использовать чтобы все таки запустилось? Да?


Именно так. Этот совет я встречал по всюду.
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34927280
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, ибо с ним гемора не оберешся
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34929108
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh wrote:
>
>> Если на C++, нужно еще msvcp80.dll.
>
> А это что за зверь? Его тоже нужно подлинковать какой-то опцией?

Реализация стандартной библиотеки C++ (потоки, контейнеры, исключения и
т.п). shared vs static выбирается той-же опицей /MD и /MT.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34929156
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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?
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34929197
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34929240
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terasПочему, все можно. Манифест генерируется? vcredist от соответствующей
версии VC не помогает? Как не запускается, что происходит, что говорит?

Ууууу... нафиг. Тут еще огород не пахан. Ладно, спасибо за консультации. Безмерно благодарен. Просветил в VC и cli. Теперь я знаю кучу модных слов. А то все, gcc, gcc... ;)
...
Рейтинг: 0 / 0
/clr и иже с ним...
    #34929447
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык наверно с приложением надо эти дллки поставлять, компиль с++/сли с рантайм-дллкой, ложи msvcp80.dll, msvcr80.dll, mscvm80.dll до кучи в папку с приложением (можно этим и не ограничиться, ещё чего-нить пихнуть, убрать всегда успеешь), должно заработать. И по возможности используй визард для создания каркаса приложения, чтобы он за тебя все необходимые пляски с бубном станцевал.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / /clr и иже с ним...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]