MSP430 DLL Probleme (RADStudio C++)

OP #2678536
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
Gast #2678550
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?
OP #2678595
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.