C++, C#

1 отговора 0 прегледа
#1

C++, C#

Питането ми е следното, как се викат класове от C# в C++ и обратното(класовете на C# са писани на Visual Studio 2005(8.0) и трябва да ги викам в C++ програми писани на Visual Studio 6.0 и обратното).
Това е доста интересна задачка, ще се радвам и ако ми сложите линк от каде да го прочета това. Мерси предварително. :)

Отговор
в отговор на Anarh #2

Re: C++, C#

Накратко казано това не може да стане толкова директно както го описваш.

И все пак - използване на С++ код от C#

От C# можеш да викаш функции от библиотеки (dll-s), но тези функции трябва да са експортирани като С, не C++, т.е. трябва да използваш extern "C", примерно. А това означава, че не можеш да експортираш директно С++ класове, а в оригиналната С++ библиотека трябва да добавиш С функции които обвиват С++ класовете.

Друг вариант е да се направи нова "смесена" библиотека на С++/CLI. Тя ще съдържа .NET класове - подобни на оригиналните С++ и ще може да се ползва от C# код като всяко друго асембли, но вътрешната имплементация в тази смесена библиотека ще се обръща към оригиналната С++ библиотека. С++ е уникален с това че може да ползва едновременно в една библиотека managed (.NET) код и native код.

Трети вариант е ако С++ кодът се оформи като COM обект - тогава може директно да се ползва от С#

Обратното - викане на C# класове от C++

С подобна смесена библиотека на C++/CLI - тя ще експортира C++ класове а вътрешно ще ползва класове от друга библиотека с .NET код

[линк]
Само че това използва стария синтаксис на Managed C++ (VS 2003), новият е известен като C++/CLI (VS 2005)

може би това е по-добре
Interop 101
part 1: [линк]
part 2: [линк]
part 3: [линк]
part 4: [линк]
part 5: [линк]
слайдове: [линк]

Отговор