Можно ли использовать DLL, созданную с помощью C #, в неуправляемом приложении VC ++? - PullRequest
6 голосов
/ 20 мая 2010

У меня есть DLL, написанная на C #, и я хочу использовать ее как с приложениями C #, так и с приложениями, написанными на неуправляемом VC ++.Возможно ли это?

Ответы [ 4 ]

4 голосов
/ 20 мая 2010

Чтобы дополнить другие ответы здесь, вот статья поддержки MS, которая описывает ваш сценарий.

http://support.microsoft.com/kb/828736

3 голосов
/ 20 мая 2010

Что ж, похоже, мне нужно снова вызвать мой неуправляемый экспорт . ; -)

Только что ответил на похожий вопрос 2 дня назад. Это полностью работает в C # и даже создает файл .lib & .exp для вашей сборки C #, которая будет использоваться C ++:

internal class Sample
{
  [DllExport("_export_test", CallingConvention.Cdecl)]
  static int Test(int a)
  {
     return a + 1;
  }
}
3 голосов
/ 20 мая 2010

Существует больше, чем просто COM-взаимодействие, в MSDN FAQ также перечислены менее известные методы:

2.2 Как вызвать сборку .NET из нативного Visual C ++?

Есть четыре основных способа вызывать сборку .NET из родного VC ++ код. Microsoft All-In-One Code Framework имеет рабочие примеры, которые продемонстрировать методы.

  1. Собственные вызовы модуля VC ++ API хостинга CLR для размещения CLR, загрузки и вызвать сборку .NET. (Все в одном Пример кода Code Framework: CppHostCLR)

  2. Если сборка .NET может быть представлена ​​как COM-компонент, собственный Модуль VC ++ может вызывать в .NET сборка через .NET - COM взаимодействие. (Пример структуры кода «все в одном» Код: CppCOMClient)

  3. Reverse PInvoke: вызов управляемого кода нативной передачи делегата нативный код может перезвонить. (Пример структуры кода «все в одном» Код: CSPInvokeDll)

  4. Если для модуля, содержащего собственный код VC ++, разрешено включить CLR , собственный код VC ++ может вызвать Сборка .NET напрямую через «Это Просто работает », или« IJW », механизм. (Пример кода платформы «все в одном»: CppCLIWrapLib)

1 голос
/ 20 мая 2010

Вы можете сделать сборку C # видимой для COM и использовать ее таким образом.

В свойствах проекта C # под кнопкой «Информация о сборке» выберите «Сделать COM видимым».

Существует множество способов доступа к COM-объектам из Native C ++, самый простой / лучший способ зависит от того, что вы делаете и как вы это делаете.

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