Использование DLLImport для импорта класса - PullRequest
3 голосов
/ 08 ноября 2011

У меня есть класс в dll: Например:

namespace foo {
   public class baa {
      /* ... */
  }
}

Как я могу импортировать класс baa из dll?это возможно?

[DllImport(DllName)]
public extern ?? foo() ??

Спасибо заранее.

Ответы [ 3 ]

7 голосов
/ 08 ноября 2011

Это не сработает. Неуправляемые библиотеки DLL экспортируют интерфейс C, а не C++. А для управляемых DLL (C # или C ++ / CLI) вам просто не нужен DllImport.

Боюсь, только функции, которые импортированы в статический класс.

2 голосов
/ 08 ноября 2011

DllImport используется только тогда, когда вы хотите вызывать неуправляемые функции из неуправляемой библиотеки (например, написанной на C ++).

Если у вас есть управляемая сборка .NET, вы просто добавляете ее в качестве ссылки на ваш проект и используете ее.

Итак, если у вас есть библиотека классов .NET, содержащая следующий класс:

namespace foo {
   public class baa {
      /* ... */
  }
}

, а затем у вас есть другой проект, которому нужно использовать эту сборку, вы переходите на узел ReferencesОбозреватель решений и Добавить ссылку на данную сборку.Затем вы вводите пространство имен в область действия:

using foo;

и создаете экземпляр класса:

baa b = new baa();
... use the b instance here
0 голосов
/ 08 ноября 2011

Это стандартный механизм экспорта C ++, который работает только с C ++. Вы не можете импортировать его из C # напрямую. Есть обходные пути, такие как экспорт управляемого типа из сборки MC ++, использование отдельной управляемой оболочки, использование COM и библиотеки типов или что-то подобное, но вы не можете использовать тот же механизм импорта / экспорта, который используют приложения C ++.

...