C++ Problemchen

Gast #1157286
Lesenswert?

Hallo zusammen,

ich habe ein kleines (Verständnis-)Problem bei der objektorientierten 
Programmierung in VC++.

Und zwar möchte ich eine DLL erstellen, die nach Aussen Zugriff auf ein 
internes Objekt ermöglicht. Die zu exportierenden Funktionen sind als 
extern "C" deklariert.

Jetzt habe ich z.B. eine Funktion
1
extern "c" __declspec(dllexport) int GetNumberOfDevices()
2
{
3
   // Hier soll jetzt auf das Objekt zugegriffen werden, also z.B.
4
   return MyObject.GetNumUsbDevices();
5
}

Nun funktioniert das ganze leider nicht, da ich ja nur eine Klasse 
programmiert habe, diese jedoch ncoh nicht instanziert wurde.
Wenn ich die Instanzierung in der GetNumberOfDevices() mache, dann ist 
das Objekt nach verlassen der Funktion ja wieder weg.

Wie kriege ich es hin, daß das Objekt erhalten bleibt (also quasi 
statisch und global ist) und auch die anderen exportierten Funktionen 
darauf zugreifen können?
Gast #1157358
Lesenswert?

Wie genau meinst du das mit dem static machen?
So vielleicht:
1
extern "c" __declspec(dllexport) int GetNumberOfDevices()
2
{
3
   static MyClass MyObject;
4
   // Hier soll jetzt auf das Objekt zugegriffen werden, also z.B.
5
   return MyObject.GetNumUsbDevices();
6
}

Ok, dann bleiben die Daten schonmal innerhalb der Funktion erhalten.
Aber andere Funktionen können immer noch nicht auf das Objekt zugreifen, 
oder?

Wie bekomme ich das Objekt jetzt noch global?
Das hier scheint nicht zu fuktionieren:
1
static MyClass MyObject;
2

3
extern "c" __declspec(dllexport) int GetNumberOfDevices()
4
{   
5
   // Hier soll jetzt auf das Objekt zugegriffen werden, also z.B.
6
   return MyObject.GetNumUsbDevices();
7
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren