Как .NET позволяет исследовать API скомпилированных DLL?

2

Как .NET разрешает API-поиска скомпилированных библиотек DLL?

  • 1
    Err .. Отражение? :-)
  • 1
    Этот вопрос не должен быть закрыт, он связан с этим вопросом: stackoverflow.com/questions/1507743/…
Показать ещё 1 комментарий
Теги:
dll

4 ответа

7
Лучший ответ

Поскольку DLL содержит метаданные обо всех типах, методах и т.д. Даже фактический код находится в IL, а не в собственном коде.

В основном бинарный файл .NET по-прежнему находится на более высоком уровне, чем собственный двоичный файл, и содержит намного больше информации о том, что там. Это позволяет Reflection работать.

  • 0
    Итак, правильно ли говорить, что C # компилируется тогда? Я спрашиваю, потому что, если я понимаю, что вы говорите, тогда IL интерпретируют, верно?
  • 0
    Если я правильно понимаю, IL - это JIT, скомпилированный с правильным машинным кодом по мере необходимости.
Показать ещё 4 комментария
1

Я не уверен, что об этом вы спрашиваете, но я могу только рекомендовать бесплатный инструмент .NET Reflector, который позволяет вы изучаете компилированную сборку .NET.

В наши дни я использую его гораздо больше, чем использую даже опубликованную документацию MSDN, потому что он намного быстрее ориентируется и более информативен для загрузки.

  • 2
    Не совсем то, о чем он просит, но все равно хорошая попытка.
  • 0
    Я не думаю, что было ясно только то, о чем он спрашивал, поэтому я и уточнил свой ответ следующим образом: «Я не уверен, что это то, о чем вы спрашиваете».
0

Это зависит.

DLL содержит список экспортируемых функций, но им может быть просто присвоено число, имя или им может быть присвоено mangled Имя С++. Последнее может дать некоторое представление о параметрах функции, но структуры данных, вызывающие соглашения и другие обязательные атрибуты обычно не документируются.

Если это COM-библиотека DLL, существует вероятность, что она содержит библиотеку типов в качестве ресурса, но это не гарантируется. В этом случае .NET может автоматически импортировать библиотеку.

Библиотека типов также может быть включена в не COM-библиотеку, но это не является широко распространенной практикой.

Если у вас есть скомпилированная библиотека DLL, предназначенная для вызова из не-COM-среды без управления, вам нужно будет перевести файлы заголовков, которые должны быть включены в DLL.

  • 0
    Я считаю, что этот вопрос специфичен для .NET, поэтому сторона C ++ / COM - хотя и интересная и точная - на самом деле не применима.
  • 0
    Этот вопрос является ответом на мой комментарий о другом вопросе, касающемся заголовков, так что нет, я не думаю, что он специфичен для .NET DLL.
-2

Одно слово: отражатель

  • 1
    Bzzt! Попробуйте еще раз.
  • 0
    Вы говорите, что Reflector не будет обеспечивать исследование метаданных?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню