Ich versteh ned ganz was du willst ....
deshalb allgemein:
fuer funktionen ueber modulgrenzen (dll / .so) ist nur der C Teil binaer definiert. C++ elemente sind nicht definiert, d.h. da kann jeder compiler / version ihr eigenes sueppchen kochen (name mergling, parameter ausrichtung ... etc)
deshalb wirst du nie irgendwas was ne methode ist, ueber die schnittstelle schicken koennen, wenn sie compilerunabhaengig bleiben soll.
richtig ist, dass du mit normalen Funktionen das "Nachbilden" kannst.
d.h. du loest die objecte in nicht in eine funktionale Form (Handles + funktionen) aus. In C kann man ja genaugenommen auch "objectorientiert" programmieren, iss halt nur ned so schoen wie in C++.
weitere hinweise findest dazu im Inet.
Der Schluessel ist eigentlich, das man die objecte ueber sogenannte handles identifizeirt, die meist einfach nur die speicheradresse des Objects sind. Die dinger werden dann meist auch als untypisierter Zeiger definiert.
wenn man nen Object erzeugen will, sieht das dann meist so aus
(am besten gleich richtig auf C - uebliche syntax mappen, also immer schoen den erfolg in form des reuckgabeparameters melden)
Code: Alles auswählen
int createObject(HandleT * pHandle, /*weitere optionen /*)
{
// irgendwo dann das Object erzeugen
* pHandle = new MyClass;
// und zum schluss
return 0;
}
ne methode aufrufen saehe dann so aus ...
Code: Alles auswählen
int myClass_DoSomething(HandleT handle)
{
int ireturn = -1;
if(handle)
{
reinterpret_cast<MyClass *>(handle)->doSomething();
ireturn = 0;
}
return ireturn;
}
SO mach ichs zumindest immer, wenn ich funktionalitaet aus ner c++ lib compilerunabhaengig irgendwo zur verfuegung stellen muss.
COM (C- Schnittstelle !!! ) macht es uebrigens aehnlich (wenn inprozess) !
Wenn das zeugs in scriptsprachen (nicht c / c++ etc) verwenden willst, musst vielleicht nur noch auf die datentypen achten, manche Scriptsprachen kommen mit gewissen daten ned klar, weils nix da gibt ...bzw interpretieren das dann etwas anders ( vorzeichenlose 32 bit integers in Visual basic z.b. )
Hoffe das hilft bisserl ....
Ciao ...