K2T.eu :: Forum
Specjalne => API/SDK => Wątek zaczęty przez: Dziaddu w Stycznia 24, 2009, 18:43:26 pm
-
Projekt naprostszej wtyczki, która przekazuje informacje o sobie komunikatorowi i wyświetla MessageBox przy ładowaniu i wyładowywaniu, stworzony dla Code::Blocks (MinGW):
http://dziaddu.eportal.com.pl/wtw/wtycz ... plugin.zip (http://dziaddu.eportal.com.pl/wtw/wtyczki/wtw_basic_plugin.zip)
W przypadku błędu "illegal byte sequence" należy w ustawieniach edytora zmienić domyślne kodowanie na UTF-8.
------
Oryginalny post:
Kaworu, mógłbyś dorzucić do instalatora kod prostej wtyczki (albo nawet kilku, na wzór SDK z Tlenu)? Próbowałem spłodzić coś samemu (wzorując się na tlenowych wtyczkach), ale próba odpalenia wtw, gdy wtyczka jest w katalogu, kończy się windowsowym komunikatem o błędzie programu.
-
Sprawdź zalącznik, tylko jest pod VS/MFC, ale powinieneś się połapać.
-
A beda inne przykłady? Na inne kompilatory? Delhpi, BCB?
-
Nie, z odrobiną logiki i wiedzy reszta sobie poradzi.
-
To niedobrze :P
-
-
-
-
Próbowałem nawet z plikiem def, ale tak, jak napisał Mal, nie jest on potrzebny.
Próbowałem wszystkich kombinacji z __stdcall i __declspec(dllexport) i wygląda na to, że tylko __declspec(dllexport) daje jakąkolwiek reakcję, niestety w postaci wysypania komunikatora... Gdy się doda do tego _stdcall, to znowu nie ma żadnej reakcji (status wtyczki: Błąd).
-
Podrzuć binarkę.
-
No własnie i teraz kaw zobacz, jezeli taki Marcin w snesie dziaddu nie potrafi sobie porta zrobic, a on mocną głowe ma to inni tez moga miec problemy wiec moim skromnym zdaniem przydałby sie port do tych podstawowych delphi i bcb w snesie przkład. Ja sam bym z BCB skorzystał :P. bo jak dziaddu nie moze to ja tym bardziej nie bede potrafił :P
-
Marcin to tylko amator, o programowaniu wie tyle, ile sobie wygooglał, albo ile mu ktoś podpowiedział ;) Więc to, że Marcin ma problem, o niczym nie świadczy :P
Binarki: http://dziaddu.eportal.com.pl/wtw/bin.zip (http://dziaddu.eportal.com.pl/wtw/bin.zip)
Pierwsza to __declspec wysypująca komunikator, druga __stdcall, trzecia __declspec(dllexport) __stdcall, a czwarta to __declspec(dllexport) <zmienna> __stdcall.
-
Nie za bardzo rozumiem co tutejszy problem ma do wersji BCB ;P
A) nie mam BCB
B) nienawidze BCB
C) Nie mam delphi
D) nie znam delphi (poza podstawowymi podstawami)
E) Nienawidze delphi
-
Pierwsza to __declspec wysypująca komunikator, druga __stdcall, trzecia __declspec(dllexport) __stdcall, a czwarta to __declspec(dllexport) <zmienna> __stdcall.
Druga, trzecia i czwarta mają dekoracje:
wtw_basic_plugin.plug plugInfo pluginLoad@8 pluginUnload@4 queryPlugInfo@8
Pierwsza to
__cdecl, a ma byc __stdcall.
-
Grrrr... Dlaczego MinGW jest takie głupie? Przecież druga to __stdcall, wszystkie były tworzone z plikiem def.
-
Bo to GCC? Sprawdź extern "C".
-
Z extern "C" też próbowałem ;) Pogooglam trochę, może coś znajdę.
-
E, tez jestem Marcin :)
Nie za bardzo rozumiem co tutejszy problem ma do wersji BCB ;P
A) nie mam BCB
B) nienawidze BCB
C) Nie mam delphi
D) nie znam delphi (poza podstawowymi podstawami)
E) Nienawidze delphi
Wszystkie punkty poprawne.
Grrrr... Dlaczego MinGW jest takie głupie? Przecież druga to __stdcall, wszystkie były tworzone z plikiem def.
Sprawdze w wolnej chwili pod gcc.
-
-
@kaw: a dało by rade udostępić ten base_plug w formie w której się od razu kompiluje (bez kwiatków) ? :P próbuje pod VS 2008 i już poprawiłem nawet błędne odwołania do nagłówków, skopiowałem API do folderu do którego są odwołania w projekcie :P ale nadal brakuje "/libUI/interface.h" z pliku WndOptionsS.h :)
-
Usuń odwołanie do libUI, powinno działać ;P
-
@kaw: a dało by rade udostępić ten base_plug w formie w której się od razu kompiluje (bez kwiatków) ? :P próbuje pod VS 2008 i już poprawiłem nawet błędne odwołania do nagłówków, skopiowałem API do folderu do którego są odwołania w projekcie :P ale nadal brakuje "/libUI/interface.h" z pliku WndOptionsS.h :)
Jakimś psim swędem kasowałem, kroiłem itp. i w końcu skompilował mi to VC 2008.
W poniższym linku wszystko co pokroiłem razem z API by nic nie zabrakło.
http://http://rapidshare.com/files/190397820/_base_plug.rar
A poniżej screen mojego nędznego działania.
(http://http://img145.imageshack.us/img145/9008/plugwi5.th.jpg) (http://http://img145.imageshack.us/my.php?image=plugwi5.jpg)
-
-
Przykład od Kaworu ma sporo zbędnego kodu, więc raczej nie jest dobrym pomysłem zaczynanie od niego.
Wiesz, tego co wysłałem to j używam jako bazy do pluginów, mam w im od razu opcji i ustawiony plik konfiguracyjny ;P
-
Ale dla kogoś, kto chce zrozumieć jak to działa, ma zbyt dużo zaciemniaczy ;)
-
To dodałem Twoj kod do Wiki ;p
-
Do jakiego Wiki - ja chyba o czymś nie wiem.
-
Dużo osob nie wie ;P
-
A jakiś link można prosić?
-
Ale tam w sumie na razie niczego ciekawego nie ma.
-
Rozumiem...
-
Wiki: [...]
Oj trudno było się domyśleć ; P
// kaw usunął link, bo wcale nie ma ochoty aby na razie google go złapały ;p
-
-
-
keidys sie żąstanawiałem and zostawieniem tylkow wersji x64. ;P
Ani się waż! ;)
Dzięki za informacje. Po skompilowaniu i próbie włączenia Zhvir dostaje informację, że nie znaleziono jakiegoś modułu, chociaż z niczego niestandardowego nie korzystałem. Czyli jeszcze jeden problem (z którym powalczę we wtorek najwcześniej), ale przynajmniej już to widzi jako binarkę x64 :D
-
-
Jeśli pod VS, to nie mam (bo nie mam VS; kod pisałem na podstawie tego, co działa w C::B, zmieniając tylko konwencje wywołań funkcji na takie, które podobno działają w VS). Może Kaworu albo Malcom pomogą.
Jeśli pod C::B, to patrz: pierwszy post. Jeśli znasz się na rzeczy i wiesz jak zrobić dll-kę, to ten szkielet powinien Ci wystarczyć, żeby przerobić go na coś działającego pod VS.
-
@kaw: a dało by rade udostępić ten base_plug w formie w której się od razu kompiluje (bez kwiatków) ? :P próbuje pod VS 2008 i już poprawiłem nawet błędne odwołania do nagłówków, skopiowałem API do folderu do którego są odwołania w projekcie :P ale nadal brakuje "/libUI/interface.h" z pliku WndOptionsS.h :)
Jakimś psim swędem kasowałem, kroiłem itp. i w końcu skompilował mi to VC 2008.
W poniższym linku wszystko co pokroiłem razem z API by nic nie zabrakło.
Wiem, że trochę bawię się w archeologa, ale czy mógłbym prosić o re-upload?
Choć podejrzewam, że ten szkielet nie będzie kompatybilny ze zmienionym API...
Czy istnieje możliwość pozyskania zgodnej, aktualnej wersji?
Z góry dziękuję. ;)
-
Wiem, że trochę bawię się w archeologa, ale czy mógłbym prosić o re-upload?
Choć podejrzewam, że ten szkielet nie będzie kompatybilny ze zmienionym API...
Czy istnieje możliwość pozyskania zgodnej, aktualnej wersji?
Z góry dziękuję. ;)
Wysłałem Ci na maila - zobacz czy dziala i ewentualnie wrzuc na forum :)
-
Dzięki wielkie, pozwól, że dopiero jutro przyjrzę się temu czemuś bliżej. ;)
-
Też by mi się przydał aktualny podstawowy kod wtyczki ...
-
-
-
-
a) chciałbym odpalić drugie wtw z innym profilem "do zabawy" (są gdzieś przełączniki wtw opisane?), nie swoim domyślnym
No bo nikt by się opisu nie spodziewał w helpie... http://wiki.k2t.eu/wiki/WTW_-_Linia_komend
b) .pdb (http://en.wikipedia.org/wiki/Program_database) mógłbyś udostępnić :)
Prędzej symbol serwer... bostrasznie mis ie chce ze storage wyciagac konkretne symbole... ;P
c) w sensie "Local Windows Debugger", command: WTW? Bo jako startup dać kod WTW, to spoko nie ma problemu, ale z execa?
Poprostu odpalić wtw w debugerze, zaladuje sobie wtyczkie mozesz sobie ją debgować, byle ona była odpowiednio skompilowana.
-
-
c:\Program Files\K2T\WTW>wtw.exe --profile "debug" --clone
Jak chcesz drugą instancję, z reszta zhvir do dzis twierdzi, ze jemu działa...
To albo w opisie by się przydało, że musi być inny profil
Chyba logiczne? Program ma tam pootwierane pliki"exclusive" i jak mu sie inny do nich dobierze to się zaczną cuda dziać, z utratą danych włącznie. Jeden profil - jeden raz załadowany.
albo ignorować .lock.
Broń boże, .lock jest właśnie po to aby uniknąć problemów kiedy usiłujesz załadować już załadowany profil. Jest ładnie kasowany kiedy profil jest wyładowany a jakby nie został to pid w nim zapisany tez ma znaczenie ;P
Dalej nie kumam, jak chcesz "odpalić wtw w debugerze" bez źródła.
Normalnie, VS wyświetli komunikat, że wtw.exe nie ma symboli i czy chcesz kontynuować. Chcesz. Debugowanie wtyczki idze wtedy całkiem dobrze, robiłem tak z tlenem ;P
(bo skąd WTW ma wiedzieć, że ten dll jest pluginem skoro nie ma go w Plugins?)
No rzecz jasna,musi miec odpowiednie rozszerzenie i w plugins być. VS sobie doskonale poradzi ze zidentyfikowaniem cotojest,ksad sie wzieło i ze to nasze ;P
a dwa >= Vista się będzie pluć, że piszę po Program Files).
To nadaj uprawienia administratora. Albo sobie zrob osobna kopie wtw do celów debugowawczych.
-
c:\Program Files\K2T\WTW>wtw.exe --profile "debug" --clone
Jak chcesz drugą instancję, z reszta zhvir do dzis twierdzi, ze jemu działa...
Bo działa - jak masz już profil debug. Samo --profile (okno wyboru profilu wg dokumentacji) nie wywołuje okienka wyboru/tworzenia profilu.
-
Bo działa - jak masz już profil debug. Samo --profile (okno wyboru profilu wg dokumentacji) nie wywołuje okienka wyboru/tworzenia profilu.
No, "załaduj profil" musi mieć profil do załadowania.
I fakt, w tym miejscu dokumentacja kłamie, "--selectProfile" wymusza okno.
-
No cóż... zainstalowałem VS 2008 E, poszukałem na wiki podstawowej wtyczki, tu na forum znalazłem wtwPlugTemplate i co? odinstalowałem całe to badziewie :) Czas na jakiś prosty tutek: jak od samiutkiego początku do pluki *.plug skompilować to co dziadu, czy adrian stworzyli. Począwszy od włączenia VS, czy odpalenia któregokolwiek pliku. Jestem kaskaderem i lubię wyzwania, ale tu zbyt wiele wydaje się obce. Niech powstanie plik wtyczki, który pokaże mi to okno "Hello world"... tylko tyle :)
-
http://wtw.adrian-007.eu/pages/code.php