2010-08-21 4 views

ответ

3

От doc:

/CLR: чисто Производит Microsoft Intermediate Language (MSIL) -только выходного файл, который не имеет нативную исполняемого кода. Тем не менее, он может содержать собственные типы, скомпилированные для MSIL.

/CLR: безопасное не Производит MSIL-только (не родные исполняемого кода), проверяемые выходного файла./clr: safe enable проверка диагностики (PEVerify Tool (Peverify.exe)).

+0

Предотвращает ли я доступ к DirectX или коду win32 из моей сборки C++ cli? – Gusdor

+0

Я также хотел бы знать, являются ли они просто проверкой типов или если они помещают флаг в заголовок, который идентифицирует их как чистые или безопасные? –

0

Я не думаю, что это достаточно информации. Из другого ответа казалось, что это просто проверка типа. Кажется от this doc, что это намного больше.

Когда /clr (не /clr:pure или /clr:safe) используются и __clrcall не используются, принимая адрес функции всегда возвращает адрес функции нативной точки входа. Когда используется __clrcall, встроенная функция точки входа не создается, поэтому вы получаете адрес управляемой функции, а не функцию thunk точки входа. Для получения дополнительной информации см. Double Thunking.

/clr (Common Language Runtime Compilation) следует, что все функции и функциональные указатели __clrcall и компилятор не разрешает функцию внутри compiland быть отмечены ничего, кроме __clrcall. Когда используется/clr: pure, __clrcall может быть указан только в указателях функций и внешних декларациях.