www.mikrocontroller.net

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


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Torsten M. (wurst0815)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Torsten M. (wurst0815)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Torsten M. (wurst0815)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hat denn niemand eine Idee, ist niemandem sowas ähnliches schon mal 
passiert? :-(

Grüße,
Torsten

Autor: RealTime (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Torsten M. schrieb:
> Hat denn niemand eine Idee

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net