2010-03-27 2 views
2

Я хотел бы добавить некоторые внешние DLL-библиотеки, например. glut32.dll (но это только пример) vs 2008 с использованием C#. Не могли бы вы сказать мне, что я должен делать шаг за шагом? Я немного запутался, потому что я нашел много решений для добавления файлов DLL, но они значительно отличаются. некоторые из них добавляют dll только с использованием кода, некоторые используют свойства в vs, добавляют ссылки, а в других учебниках есть о регистрации dll в системе. Но как это все вместе?Добавление dll в VS 2008

С уважением!

ответ

3

Существуют различные типы библиотек DLL, вам нужно будет обрабатывать их по-разному, когда вы используете их в проекте C#. 3 основных типа:

  • DLL, которые содержат неуправляемый код и были предназначены для использования программой, написанной в неуправляемом коде. Вы не можете использовать такую ​​DLL напрямую, нет способа добавить ссылку на них в проекте C#. Вы должны использовать P/Invoke, для объявления экспортированных функций в DLL требуется атрибут [DllImport]. Glut32.dll - такая DLL. Самый простой тест, который вы можете использовать, чтобы узнать, есть ли у вас такая DLL, - запустить Dumpbin.exe/exports в этой DLL. В нем перечислены имена экспортируемых функций.
  • DLL, реализующие COM-сервер в процессе. Они также написаны в неуправляемом коде. .NET имеет очень хорошую поддержку для использования таких серверов, если у вас есть библиотека типов для них. Библиотека типов обычно внедряется в DLL, Visual Studio ожидает ее найти, когда вы добавляете ссылку на проект, либо через вкладку COM, либо на вкладке «Обзор». Очень простой тест Dumpbin.exe/export снова, COM-сервер в процессе имеет 4 экспортированные функции. Функция DllGetClassObject является важной. Вы можете просмотреть библиотеку типов, встроенную в DLL, с помощью OleView.exe, File + View Typelibrary. Хорошим примером является c: \ windows \ system32 \ shell32.dll
  • DLL, которые были созданы управляемым компилятором. Они не содержат машинный код, как и другие типы, они содержат IL-код и метаданные. Это родной тип DLL для управляемого кода, вы просто используете Project + Add Reference для добавления ссылки, компилятор автоматически знает типы, доступные в DLL.

Первый вид - это тот, с которым вы столкнетесь много для DLL в дикой природе. Там есть лот кода, написанного для Windows на неуправляемом языке. Это не что-то вроде DLL, которое особенно легко использовать из управляемого кода. Например, у Glut32.dll есть лот экспортируемых функций, написание декларации P/Invoke для каждого из них является болезненным.

Инструменты, которые вы можете использовать для этого: SWIG и PInvoke Interop Assistant. Первый требуется, когда DLL была написана на языке C++. C++-классы не могут использоваться непосредственно из программы C#, им нужна оболочка, написанная на языке C++/CLI. Последний инструмент полезен для библиотек DLL, написанных на C, включая Windows API.

Остерегайтесь того, что эти инструменты обычно не дают вам чистого и гарантированного труда взаимодействия. Объявления в неуправляемом коде неоднозначны, вам нужно знать точную семантику аргументов неуправляемой функции, чтобы выбрать правильный. Получение неправильного может быть трудно диагностировать, лучшим местом для получения помощи является форум или сайт Q + A. Подобно stackoverflow.com

+0

+1; Лучший ответ до сих пор, другой сайт стоит упомянуть http://pinvoke.net/ - который, как представляется, имеет раздел для glut32.dll, к сожалению он в настоящее время пуст, хотя :( – Rob

1

Вы можете использовать диалоговое окно Добавление ссылки в меню проекта, чтобы сделать это. Просто перейдите на вкладку COM и добавьте свою библиотеку. Теперь вы можете проверить, что классы отображаются в обозревателе объектов

1

Щелкните правой кнопкой мыши по проекту в проводнике решений и выберите ссылку, затем выберите и выберите dll.

0
  1. В обозревателе решений щелкните правой кнопкой мыши узел проекта и нажмите Добавить ссылку.
  2. В диалоговом окне «Добавить ссылку» выберите вкладку, указывающую тип компонента, который вы хотите ссылаться.
  3. Выберите компоненты, которые вы хотите использовать, и нажмите кнопку ОК. Наконечник.
Смежные вопросы