Действительно ли возможно использовать созданное использование DLL C# в неуправляемом VC ++ приложение?

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

6
задан Matthew Bowen 20 May 2010 в 12:38
поделиться

4 ответа

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

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

4
ответ дан 9 December 2019 в 22:30
поделиться

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

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

internal class Sample
{
  [DllExport("_export_test", CallingConvention.Cdecl)]
  static int Test(int a)
  {
     return a + 1;
  }
}
3
ответ дан 9 December 2019 в 22:30
поделиться

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

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

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

1
ответ дан 9 December 2019 в 22:30
поделиться

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

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 interop. (Образец комплексной платформы кода Код: CppCOMClient)

  3. Reverse PInvoke: управляемый код вызывает собственный код, передавая делегат собственный код может перезвонить. (Образец комплексной платформы кода Код: CSPInvokeDll)

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

3
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: