C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

String nach function pointer ??

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Simon Moser
Guest





PostPosted: Sun Apr 18, 2004 11:39 am    Post subject: String nach function pointer ?? Reply with quote



Hallo,

ich habe ein etwas trickreiches Problem: Ich schreibe eine komponente,
welche Plugins laden kann. Diese plugins kommen als DLL zusammen mit
einer XML beschreibung, welche die Signaturen der enthaltenen Methoden
enthält

Bsp:
plugin class name TEST
function void myMethod ()

nun bin ich nach dem einlesen der XML auch in der Lage, das plugin
TEST.dll zu laden und den entryPoint für die Methode myMethod zu
bestimmen. Um die function myMethod aufrufen zu können, dachte ich
(wie ich das früher schon mal gemacht habe) über function pointer
nach.

Bsp.:
typedef void (TEST::*PfnMyMethod)(); [1]
TEST* a1 = (TEST*)_alloca(sizeof(TEST)) [2]
PfnMyMethod* pfnMethod = <cast> procedure_address [3]
a1->*pfnMethod)();

die procedure_address in [3] hole ich mir über den entrypoint, d.h
mittels GetProcAddress (WIN) bzw. dlsym(UNIX).

Problem ist, das ich die typedef declaration in [1] dynamisch
generieren müsste. Und zwar mit input (TEST) oder eben was immer in
der XML definiert ist. Und das krieg ich nicht hin Sad(
Hat irgendjemand eine Idee, wie man das lösen könnte ?!

Grüße
Simon

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Hans Mueller
Guest





PostPosted: Mon Apr 19, 2004 9:06 am    Post subject: Re: String nach function pointer ?? Reply with quote



Simon Moser <Simon.Moser (AT) gmx (DOT) de> wrote:

Quote:
ich habe ein etwas trickreiches Problem: Ich schreibe eine komponente,
welche Plugins laden kann. Diese plugins kommen als DLL zusammen mit
einer XML beschreibung, welche die Signaturen der enthaltenen Methoden
enthält

Die C++ Signatur muß bereits zur Compilezeit Deiner Applikation
bekannt sein - die dynamisch zu generieren geht halt so nicht.

Aber vielleicht reicht es Dir, wenn Du eine Basisklasse für
die Plugin-Funktionen festlegst und die zur Compilezeit nimmst.
Deine Plugins müssen dann eben eine Funktion mit genau den
festgelegte Parametern zur Verfügung stellen. Damit sollte
man meistens auskommen!?

Ansonsten musst Du halt zur Laufzeit alles selber machen (dann
wird's aufwendiger). Vielleicht willst Du einen logischen
Funktionsaufruf (d.h. wie Du ihn in der XML-Datei beschreibst)
auf mehrere Elementare aufteilen, etwa in der Art:
pluginDynCaller.setNumberOfParams( numberOfParams );
pluginDynCaller.setParamType( paramIndex, typeOfParamIdentifier );
pluginDynCaller.stringParam( paramIndex, stringValue );
pluginDynCaller.intParam( paramIndex, intValue );
pluginDynCaller.doFunctionCall();
und die dann in der richtigen Reihenfolge aufrufen.

Gruss, Hans-Achim

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.