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?
Niestety nie da się, ale jest w planach.
skolima
4.09.2005 - 19:52
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#.
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)...
Zamiast stałych możesz liczb uzywać, w SDK sa podane wartości stałych
To tak dla hardcore'owców
Tak, ale jak już coś robimy to warto robić stałe dla tych uzywanych wartości
skolima
4.09.2005 - 21:44
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.
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
5.09.2005 - 16:57
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?
winthux
5.09.2005 - 17:22
QUOTE(Thinker @ 5.09.2005 - 18:01)
trzeba tylko interface zrobic i ot cala sztuka tak sie w konnekcie nie da?
Nie da. K jest w unmanaged c/c++ i jedynym wyjściem jest COM lub mixowanie unamanaged z managed
.
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
5.09.2005 - 18:18
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
QUOTE
tzn ze dll'ki z C# tez nie pojda bez frameworka, ktorego przeciez malo kto ma
Dokładnie! A niech się ludziska ucywilizują
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.