2010-05-23 12 views
5
    Ben a library kullanabilirsiniz acaba
  • - C++ yazılmış - C#
  • sorun o kütüphane kendi yapılarını ve sınıfları .. ben edebilecek sahiptir C# kullanın?

TeşekkürC# ve C++ Kitaplığı

DÜZENLEME
Bu kütüphane açık kaynak ..
yani benim gereksinimleri eğer C++ kodunda özel bir şeye ihtiyacı, ben ... bunu

cevap

3

Yönetilen kodda C++ sınıflarını doğrudan kullanamazsınız. Başlıca problemler, C++ kodunun kullandığı aynı bellek ayırıcısını kullanamamakta ve kurucu ve yıkıcıyı kolayca kullanamayacaktır. Bir Microsoft çalışanı, bunun imkansız olmadığını göstermek için a blog post gönderdi. Bunu yapmamanızı tavsiye etmem.

COM bir çözümdür, ancak bu her zaman oldukça büyük bir yeniden yazma ve iyi bir COM programlama bilgisi gerektirir. C++/CLI dilinde bir managed class wrapper genellikle en iyi çözümdür. Bu sarıcı sınıflarını otomatik olarak oluşturmayı düşünmek için SWIG tool numaralı telefondan bir göz atabilirsiniz. Ancak bu aracın çözdüğünden daha fazla sorun yaratabileceğine dikkat edin.

3

vardır mümkün olacak iki yolu, her ikisi de (.NET sınıflara C++ sınıfları eşler) bir adaptör kullanılarak:

  • C++/CLI
  • COM

eski COM yoluyla gidiş önler ve mümkün olabilir C++ kodunun çok sadece doğru anahtarlar derlenmeye.

Ek: teori P ise/çağır mümkün olabilir, ancak tüm C++ semantik sen (IntPtr olarak ve örnek referanslar) C++ elle nesne ömrünü işlemek gerekir, yok olabilir. Ayrıca tabiki isimlendirilmiş isimleri de aramanız gerekecek ...

3

C++/CLI'de yönetilen bir sarıcı yazmak başka bir seçenektir. P/Invoke kullanmak yerine tercih ederim.