C++ Class in DLL, Plugin do VC projektu

Samostatné vypracování náročnějšího programu v libovolném programovacím jazyce (obvykle v jazyce C++) a příslušné vývojové a uživatelské dokumentace jako završení výuky individuálního programování. Tento program se může stát základem pro individuální projekt požadovaný k bakalářské zkoušce z informatiky. Zápočet bude udělen za vypracování detailní specifikace a předvedení rozpracované verze díla.
Uživatelský avatar
Almer
Site Admin
Příspěvky: 686
Registrován: 12. 10. 2004 10:58
Typ studia: Informatika Ph.D.
Bydliště: Mala Strana - 203
Kontaktovat uživatele:

C++ Class in DLL, Plugin do VC projektu

Příspěvek od Almer »

Takze lidicky, snad moc neotravuji

Jde mi o to, pokud mam nejaky projekt, konkretne visualizaci algoritmu pro Informaticke programovani pro 1.rocnik (ano, onen Kryluv Napad, co nas zadal v lete), tak tam chci, aby se dalo pridavat dynamicky dalsi algoritmy.

Znamena to, ze to musi tyto Classy (jednotlive alg) odvozene od Abs tridy byt uchovany v DLL souboru jako jakysi plugin.

Nevite o tom neco? nekdo cokoliv? neco specifictejsiho nez ASK GOOGLE Motherfu*ka?
Zakládající člen klubu Ortodoxních Matfyzáků :-D

Jsem LAMER ale neumim se ani podepsat ]:-)
maceta
Matfyz(ák|ačka) level I
Příspěvky: 2
Registrován: 17. 6. 2006 21:33

Příspěvek od maceta »

O c++ pluginy v dll(naivne a jednoduse) sem se v ramci rocnikoveho projektu pokousel taky a nakonec me natolik znechutily technicky problemy, ze sem presel na .NET. Jinak par linku co se mi tu vali na naky jednoduchy tutorialy http://www.codeproject.com/dll/plugin.asp
http://www.codeproject.com/dll/plug-in.asp
http://www.jdkoftinoff.com/main/Article ... F_Plugins/
http://www.ddj.com/showArticle.jhtml;js ... =184401819
t2
Matfyz(ák|ačka) level I
Příspěvky: 49
Registrován: 22. 1. 2006 15:19

Příspěvek od t2 »

Ono tento problem uz riesilo mnoho projektov. Vysledkom su technologie ako COM alebo CORBA. Nie je to jednoduche. Napriklad velka cast roznych projektov to riesi tak, ze si vymyslia vlastny skriptovaci jazyk, v ktorom sa pisu pluginy (gimp, a mnohe dalsie). Tie (podla mna lepsie) projekty pouziju uz nejaky existujuci skriptovaci jazyk, napriklad Javascript. Ma to tu vyhodu, ze pluginy su jednoduche textove subory, ktore sa nemusia kompilovat a rovno bezia, nevyhodou je, ze interpretacia takychto skriptov je pomalsia ako kompilovany kod (samozrejme).

Napriklad toto je C kniznica interpretujuca Javascript, ktoru pouziva mozilla

http://www.mozilla.org/js/spidermonkey/

Si myslim, ze na typ projektu ktory robis, je toto ovela lepsie riesenie. Uz len to ze na pridavanie vlastnych algoritmov cloveku staci vediet Javascript a otvorit notepad, nemusis nic kompilovat a riesit dll kniznice
Uživatelský avatar
Almer
Site Admin
Příspěvky: 686
Registrován: 12. 10. 2004 10:58
Typ studia: Informatika Ph.D.
Bydliště: Mala Strana - 203
Kontaktovat uživatele:

Příspěvek od Almer »

To je sice hezke, ale tak to nebude fungovat.

Muj projekt nakonec bude psany v QT (pro linuxaky asi dost zname - KDE, Opera), ktery ma svuj vlastni predkompiler ktere mu se predhodi C++ kod s QT makry, ktere rozbali do C++ zdrojaku, ktery se az pak necha kompilovat na g++,VS nebo na co to budu chtit.

Problem s pluginy zustava, podle vedouciho projektu, je to jednoduche vyresit, pry na to staci jakasi fce, jako vstup, abstraktrni trida v projektu a neco malo znalosti.

Tak mi tu nerikejte, ze to je strasne slozite a lidi na to musi si vymyslet vlastni jazyky na ukladani.

Stale nikdo?
Zakládající člen klubu Ortodoxních Matfyzáků :-D

Jsem LAMER ale neumim se ani podepsat ]:-)
David
Matfyz(ák|ačka) level II
Příspěvky: 80
Registrován: 7. 11. 2004 18:57
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od David »

Kdyz bys to delal v jave... Tam na nacteni pluginu staci par radku. Reflexion API umi vytvorit objekt ze Stringu s nazvem tridy objektu:

Kód: Vybrat vše

// ziska nazvy trid pluginu (treba ziska jmena class souboru a odstrani .class)
String pluginNames = getPluginNames();
for (String pluginName:pluginNames) {
  Class class = Class.forName(plugin);
  plugins.add( (Plugin) class.newInstance() );
}
Kde Plugin je nejaka abstraktni trida.

Ale v RTTI v C++ tohle bohuzel neumi.
Ale treba je nejaka knihovna...
Odpovědět

Zpět na „PRG033 Ročníkový projekt - specifikace“