Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pisanie wtyczek w C#
Konnekt | Forum > Developerzy > Tworzenie wtyczek
rain
Chciałem przyczynić się do rozwoju Konnekta, ale C++ mnie zniechęca. Dużo łatwiej programuje mi się w C#, stąd moje pytanie:

Czy da się napisać wtyczkę w C#, używając bieżącego SDK?
psota
Niestety nie da się, ale jest w planach.
skolima
Da się... ale nie polecam tego początkującym. Jeśli masz doświadczenie w Marshalingu, łączeniu kodu zarządzanego i nie - da się. Jakbys zaczął - udostępnij to, co napiszesz, bo de facto będzie to SDK dla C#. ;-)

Na poważnie - aktualnie nie ma SDK'a pod C#, więc wymagało by to dużo pracy i sporej wiedzy o C#.

W planach jest albo stworzenie obiektów COM, aby umożliwić pisanie wtyczek w dowolnym języku, albo przeportowanie SDK (najpewniej jakims automatem, nieco tego z dużo, żeby pisać wrapper ręcznie) do C#.
Olórin
Do odpalenia wtyczki potrzeba jest praktycznie tylko struktura cCtrl i sIMessage_base + troche stałych (to można zrobić na pewno automatem (np. używając regexpów)...
Aule
Zamiast stałych możesz liczb uzywać, w SDK sa podane wartości stałych tongue.gif To tak dla hardcore'owców wink.gif
Olórin
Tak, ale jak już coś robimy to warto robić stałe dla tych uzywanych wartości wink.gif
skolima
Swig - automatyczne generowanie wrapperów z plików c++

Używałem tego trochę w pracy. Fajny, kiedy masz dużo kodu i źródła do niego. No właśnie - nie wystarczą tutaj niestety nagłówki, trzeba przekompilować kod...

Ale błagam - jak ktoś się za to zabierze, niech robi to porządnie, elegancki marshaling, a nie magiczne stałe.
hao
Niestety strona swiga nie działa...

Do obsługi COM jeszcze trochę zostało, chociaż powoli zaczyna się ona mocno skracać. Kto ma dostęp do kodu Staminy niech zerknie czy jego zdaniem wszystko jest na swoim miejscu, zwłaszcza w najbardziej podstawowych klasach w Object.h, ObjectImpl.h i ObjectPtr.h ...

Co do wrapperów, jakie mamy tutaj możliwości? Czy automatycznie portujemy cały kod, czy tylko definicje klas, stałych itd...? W niektórych klasach (a zwłaszcza Stamina::String) wiele funkcji jest inline, wrapper miałby z tym oczywisty problem, więc trzeba by pomyśleć jak ten problem ominąć?

Byłoby świetnie gdyby ktoś się temu przyjrzał, tak żeby jak najszybciej uzgodnić zasady pisania, póki Stamina.lib jest jeszcze w budowie...
Thinker
ja sie tam nie znam, ale programuje w C# i w sumie od poczatku (3 miechy) siedze tylko i wylacznie nad moja dll'ka do pewngo systemu
i w sumie z tego co widzialem to trzeba tylko interface zrobic i ot cala sztuka
tak sie w konnekcie nie da? smile.gif
winthux
QUOTE(Thinker @ 5.09.2005 - 18:01)
trzeba tylko interface zrobic i ot cala sztuka tak sie w konnekcie nie da? smile.gif
*



Nie da. K jest w unmanaged c/c++ i jedynym wyjściem jest COM lub mixowanie unamanaged z managed smile.gif.

K ładuje wtyczki przez standardowe procedury w c/c++ (LoadLibrary, GetProcAddress) i takie coś nie pozwala na uruchomienie bibliotek w .Net. Powód: prosty, .net po skompilowaniu jest w "języku pośrednim" i dopiero podczas uruchamiania ten "pośredni język" jest przekompilowany przez framework do wykonwywalnego, a loadlibrary ładuje już wykonywalny...
Thinker
winthux:
tzn ze pliki exe/dll sa tez zapisywane w IL?

i teraz mnie nasunela sie nastepna mysl.. tzn ze dll'ki z C# tez nie pojda bez frameworka, ktorego przeciez malo kto ma sad.gif
Olórin
QUOTE
tzn ze dll'ki z C# tez nie pojda bez frameworka, ktorego przeciez malo kto ma

Dokładnie! A niech się ludziska ucywilizują wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.