Удалить неуправляемые символы из метаинформации сборки C ++ / CLI - PullRequest
3 голосов
/ 13 января 2012

Я создал оболочку C ++ / CLI для некоторой библиотеки.Когда я проверяю скомпилированную сборку в одном из свободно доступных декомпиляторов, кроме чисто управляемых классов и пространств имен, я вижу множество неуправляемых чистых классов C ++ и пространств имен.Я не вижу смысла иметь их там.

Есть ли способ избавиться от них и показывать только чисто управляемые вещи?Это вопрос чистой эстетики, не более того.

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Это намного больше, чем просто эстетика, вы, очевидно, компилируете нативный код в IL вместо машинного кода.Компилятор C ++ / CLI очень хорошо компилирует нативный код C ++ в IL, почти все поддерживается.Однако то, что вы получаете, неэффективно, вы не получаете преимущества оптимизатора кода, который может тратить время на компиляцию для генерации оптимизированного машинного кода..NET-компилятор точно в срок имеет также оптимизатор, но он не может делать ту же работу.

Исправьте это, применив параметр / clr только к отдельным файлам исходного кода.Или вы можете сделать это в исходном коде с помощью управляемой директивы #pragma.

2 голосов
/ 13 января 2012

Думаю, вы захотите создать несмешанную сборку. Читайте о различных «разновидностях» библиотек C ++ / CLR :

  • Смешанный (/ клр)
  • Чистый (/ клр: чистый)
  • Сейф (/ clr: сейф)

В частности, вы, похоже, следуете после /clr:safe, который является наиболее ограничивающим форматом вывода и приводит к сборкам, так же, как они созданы, например, с C # или VB.Net

Сравнение смешанных, чистых и проверяемых признаков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...