Мне было интересно, если параметр проекта C# «Разрешить небезопасный код» применяется только к небезопасному C# -коду в самом проекте или необходимо установить этот параметр при связывании в родной C++ DLL? Как насчет ссылки в управляемой DLL, которая сама ссылается на родную DLL? Что этот вариант действительно делает, под капотом?Какова фактическая функция настройки проекта C# «Разрешить небезопасный код»
4
A
ответ
8
Это связанно с «небезопасным» ключевым словом в C#. «небезопасно» отключает все проверки, которые обычно происходят, и позволяет вам напрямую обращаться к памяти. он не ссылается на вызов собственных C++ DLL или интерфейсов.
5
Это позволяет использовать «небезопасный» блок.
unsafe(...)
{
}
3
Его необходимо использовать небезопасный {} контекст. Раньше требовалось использовать sizeof(), но в более поздних версиях это уже не так.
Вам не нужно, чтобы небезопасный код, если вы externing в другую DLL написано на другом языке, как C.
5
Это относится только к использованию блоков unsafe
(где могут использоваться указатели). Он не управляет P/Invoke.