2009-10-28 12 views
5

Jak wywołać kod .NET z natywnego C++ (kod niezarządzany)? Chcę udostępnić kod .NET mojej aplikacji niezarządzanej (C++), a następnie użyć ich. Dokładniej, chcę wywołać C# z natywnego C++ :). Wiem, że jest wiele sposobów, ale czy możesz mi powiedzieć o zaletach i wadach każdego z nich? A propos, nie chcę używać COM, więc jakie są opcje?Jak korzystać z kodu zarządzanego z kodu niezarządzanego?

Czy to możliwe, że zawijam kod C# w C++/CLI, a następnie wołam go z C++? Jeśli tak, jak mam to zrobić? Jak zawinąć C# w C++/CLI, a następnie wywołać go z C++?

+0

możliwy duplikat funkcji [Exporting dll do niezarządzanych programów] (http://stackoverflow.com/questions/12647766/exporting-dll-functions-to-unmanaged-programs) – Rohit

Odpowiedz

0

Użytkownik może expose zarządzany składnik jako obiekt COM.

5

Pisałem o tym niedawno. Chodziło o Delphi, ale to nie znaczy, że nie będzie działać również z C++.

.NET component in DELPHI 2009

Nawet nie wiedząc wiele o C++, nadal wiem, że IUnknown i COM kompatybilne referencje interfejs powinien być użyteczny w porządku z C++ (w przypadku trzeba przekazać obiektów, nie tylko struktury).

  • Możesz użyć C++/CLI Microsoftu, aby odwoływać się do twojego kodu C# i eksportować go jako zwykłe funkcje DLL.
  • Możesz również pobrać MSBuild task napisałem, że pozwala na eksportowanie funkcji bezpośrednio z C#. Analogicznie do sposobu użycia DllImportAttribute.

Ten kod C# wyeksportowałby funkcję "YourExportName", która może być używana tak jak każda inna funkcja kompatybilna z CC.


class Sample 
{ 
    [DllExport("YourExportName")] 
    static int TestFunction(int left, int right) 
    { 
    return left + right; 
    } 
} 
1

Zawsze można osadzić Mono. Osobiście zrobiłem to w dwóch projektach i jest to dość łatwe. Postępuj zgodnie z Embedding Mono, aby uzyskać więcej informacji.

Powiązane problemy