В VC++ .Net Что означает Clr/Safe (/clr:safe
) и Clr/Pure (/clr:pure
)?VC++ .Net Clr/Safe and Clr/Pure
ответ
От doc:
/CLR: чисто Производит Microsoft Intermediate Language (MSIL) -только выходного файл, который не имеет нативную исполняемого кода. Тем не менее, он может содержать собственные типы, скомпилированные для MSIL.
/CLR: безопасное не Производит MSIL-только (не родные исполняемого кода), проверяемые выходного файла./clr: safe enable проверка диагностики (PEVerify Tool (Peverify.exe)).
Я не думаю, что это достаточно информации. Из другого ответа казалось, что это просто проверка типа. Кажется от this doc, что это намного больше.
Когда
/clr
(не/clr:pure
или/clr:safe
) используются и__clrcall
не используются, принимая адрес функции всегда возвращает адрес функции нативной точки входа. Когда используется__clrcall
, встроенная функция точки входа не создается, поэтому вы получаете адрес управляемой функции, а не функцию thunk точки входа. Для получения дополнительной информации см. Double Thunking.
/clr
(Common Language Runtime Compilation) следует, что все функции и функциональные указатели__clrcall
и компилятор не разрешает функцию внутри compiland быть отмечены ничего, кроме__clrcall
. Когда используется/clr: pure,__clrcall
может быть указан только в указателях функций и внешних декларациях.
Предотвращает ли я доступ к DirectX или коду win32 из моей сборки C++ cli? – Gusdor
Я также хотел бы знать, являются ли они просто проверкой типов или если они помещают флаг в заголовок, который идентифицирует их как чистые или безопасные? –