Forum: PC-Programmierung MSP430 DLL Probleme (RADStudio C++)


von Torsten M. (wurst0815)


Lesenswert?

Hallo liebe Forumsmitglieder!

Ich habe ein, ich denke leider ziemlich spezielles, Problem mit dem 
RADStudio/Compiler/Linker von Embarcadero oder der MSP430.dll von 
Elpotronic.

Ich versuche das Problem erst einmal etwas allgemeiner zu halten, 
vielleicht erinnert sich ja einer an eine ähnliche Situation?

Ich nutze besagte MSP430.dll von Elpotronic um auf deren 
Programmieradapter zugreifen zu können.

Ich habe eine Klasse (ich nenne sie Kernel) geschrieben die als einzige 
mit den DLL-Funktionen arbeitet.

Es gibt eine einzige Instanz dieser Klasse in meinem Programm.

Diese Instanz wird von meinem Hauptfenster genutzt und funktioniert dort 
inzwischen auch ohne größere Probleme, der Programmer von Elpotronic 
macht was ich mir vorstelle.

Nun habe ich aber noch einen Extra-Dialog erstellt in dem auf die selbe 
Kernel-Instanz zugegriffen wird. Ich übergebe den Zeiger auf die Klasse 
in den Dialog.

Jedoch verhalten sich nun diese Klasse/die DLL-Aufrufe nicht genauso wie 
im Hauptfenster - es gibt einen Fehler beim Aufruf verschiedener 
DLL-Funktionen.

Ich verzweifle Inzwischen an dem Problem - hat irgendjemand eine Idee 
was dazu führen kann, dass sich eine Instanz in dem einen Dialog so und 
in dem anderen Dialog anders verhält?

Mein Verdacht geht ja hin zur DLL und dass die DLL für jeden Dialog neu 
geladen wird und bestimmte Informationen verloren gehen - wie kann ich 
sowas debuggen?

Ich hoffe das Problem einigermaßen verständlich formuliert zu haben!

Viele Grüße!
Torsten

von Peter II (Gast)


Lesenswert?

> Nun habe ich aber noch einen Extra-Dialog erstellt in dem auf die selbe
> Kernel-Instanz zugegriffen wird. Ich übergebe den Zeiger auf die Klasse
> in den Dialog.

du meinst bestimmt ein zeiger auf das Objekt - nicht auf die Klasse.

Die dll wird ja nur vom dem Kernel geladen, damit ist es doch egal ob 
ein Dialog geöffnet wird oder nicht.

Bist du sicher das du nicht irgendwo eine Kopie vom dem Kernel-Objekt 
anlegst, und diese dann über den Destruktor beendet wird?

Zur Sicherheit den Kopiekontructor Private machen, auch den Zuweisungs 
operator geleich mit.

Arbeitest du mit Threads? Wenn ja alles threadsicher gemacht?

von Torsten M. (wurst0815)


Lesenswert?

Danke für die schnelle Antwort!

Ich meinte natürlich das Objekt, nicht die Klasse.

Die Adressen vom Kernel-Objekt sind in beiden Dialogen gleich, nur die 
Funktionalität scheinbar eine andere :-(

Da die Adressen gleich sind, gehe ich davon aus, dass es sich um das 
selbe Objekt handelt.

Ich arbeite ohne Threads :-/

Viele Grüße,
Torsten

von Torsten M. (wurst0815)


Lesenswert?

Hat denn niemand eine Idee, ist niemandem sowas ähnliches schon mal 
passiert? :-(

Grüße,
Torsten

von RealTime (Gast)


Lesenswert?

Torsten M. schrieb:
> Hat denn niemand eine Idee

Wo ist der Code? Deine Beschreibung ist Dein Wunsch, die Umsetzung kann 
abweichen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.