Мне было интересно, применяется ли параметр проекта С# «Разрешить небезопасный код» только к небезопасному коду С# в самом проекте или необходимо установить этот параметр при компоновке в собственной DLL С++? Как насчет связывания в управляемой библиотеке DLL, которая сама связывается с собственной библиотекой DLL? Что эта опция на самом деле делает под капотом?
Какова фактическая функция параметра проекта С# Разрешить небезопасный код
Ответы (4)
Это связано с ключевым словом «небезопасно» в C#. «unsafe» отключает все проверки, которые обычно происходят, и позволяет вам напрямую обращаться к памяти. это не относится к вызову родных C++ DLL или интерфейсов.
person
Nick Berardi
schedule
24.10.2008
Он позволяет использовать «небезопасный» блок.
unsafe(...)
{
}
person
Maxime Rouiller
schedule
24.10.2008
Это относится только к использованию блоков unsafe
(где можно использовать указатели). Он не управляет P/Invoke.
person
Jeff Yates
schedule
24.10.2008
Необходимо использовать небезопасный контекст {}. Раньше требовалось использовать sizeof(), но в более поздних версиях это уже не так.
Вам не нужно разрешать небезопасный код, если вы подключаетесь к другой DLL, написанной на другом языке, таком как C.
person
cfeduke
schedule
24.10.2008