Hallo zusammen,
ich habe eine c++ Dll die eine methode bereit stellt, die mir ein Pointer auf ein object liefert(kein COM). Sehr stark vereinfacht sieht die verwendung dieser dll in c++ so aus!
#include DefinitionOfInterfaceClass.h
typedef IMyInterface* (*pfnMyObject)();
void test()
{
pfnMyObject pGetObject;
HMODULE hMod = LoadLibrary("MyCPlusPlus.dll");
pGetObject = (pfnMyObject*)GetProcAddress(hMod,"GetObjectMethodName");
IMyInterface* pObj = pGetObject();
pObj->DoSomething();
}
Diese Dll möchte ich jetzt in c# verwenden.
[DllImport("MyCPlusPlus.dll", EntryPoint = "GetObjectMethodName")]
public static extern IntPtr getObjectInCSharp();
Bis hier her funktioniert das auch....nach dem Aufruf der "getObjectInCSharp" Methode habe ich einen IntPtr! Soweit so gut, aber wie bekomme ich jetzt aus dem IntPtr meinen Klassenpointer bzw. die Objekte innerhalb der Klasse?
Klasseninterface nachbauen und dieses Interface anstelle des IntPtr beim Import setzen?
Geht dieser Mechanismus überhaupt in c# zu adaptieren?
In der MSDN habe ich nur Beispiele für Strukturen gefunden und da waren es auch keine Pointer auf Strukturen sondern Kopien die von den Methoden geliefert wurden.
Kann jemand helfen?
Again what learned...
[Hinweis] Wie poste ich richtig? Punkt 2.2
Crosspost von http://www.c-plusplus.de/forum/302756