Problem mit Output-Plugins unter Windows10

Alles was nicht direkt mit dem normalen Verhalten des PC_DIMMERs zu tun hat
Antworten
nefarius2001
Lüsterklemmenschrauber
Beiträge: 35
Registriert: 20.01.2009, 09:28

Problem mit Output-Plugins unter Windows10

Beitrag von nefarius2001 »

Hallo allerseits,

ich habe (nach längerer PCDimmer-Pause) die aktuelle Version installiert und mein altes selbstgeschriebenes Output-Plugin eingefügt.
DLLActivate & DLLDestroy werden wie erwartet aufgerufen. DLLSendMessage hingegen NIE...
Im Testprogramm funktionieren alle (DLLActivate & DLLDestroy & DLLSendMessage).
Vielleicht interessant: DLLSendData schmeißt im Testprogramm jedoch einen "Lesen von Adresse 0000"-Fehler, obwohl in der Funktion nichts drin steht.

Das C++-Outputplugin-Beispiel (https://www.pcdimmer.de/index.php/softw ... ntwicklung) hat mich zusätzlich verwirrt, hier stehen DLLCreate und DLLStart als exportierte Funktionen, aufgerufen wird allerdings DLLActivate (selbes für DLLDestroy => DLLDeactivate)

Vermutlich übersehe ich etwas simples, ich hatte vor ein paar Jahren mal alles durchgekaut, zum laufen gebracht und dann lief es - bis jetzt.

Hat jemand einen Tipp für mich?

Viele Grüße
Nefarius
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Problem mit Output-Plugins unter Windows10

Beitrag von Christian »

Hi Nefarius,

sorry, aber das ZIP-File für die C++ Beispiele ist leider nicht mehr aktuell. Für Version 5 habe ich die Pluginschnittstelle angepasst. Die korrekten Exports lauten so, wie sie auf der Seite "https://www.pcdimmer.de/index.php/softw ... ntwicklung" genannt werden.

Um abwärtskompatibel zu bleiben, habe ich aber bei nicht-vorhandener "DLLCreate"-Funktion ein fallback programmiert, sodass dann nach der "DLLActivate" gesucht wird (ebenso bei DLLDestroy <=> DLLDeactivate). Deshalb wird Dein altes Plugin auch noch aufgerufen. Warum allerdings beim DLLSendMessage ein Fehler kommt kann ich nicht sagen. DLLSendMessage an sich habe ich seit Ewigkeiten nicht mehr geändert. Die Aufrufkonvention ist geblieben:
procedure DLLSendMessage(MSG:Byte; Data1, Data2:Variant);stdcall;

das heißt in C++ ja weiterhin:
void DLLSendMessage(char MSG, VARIANT Data1, VARIANT Data2);

ist DLLSendMessage denn auch als stdcall deklariert?

viele Grüße,
Christian
nefarius2001
Lüsterklemmenschrauber
Beiträge: 35
Registriert: 20.01.2009, 09:28

Re: Problem mit Output-Plugins unter Windows10

Beitrag von nefarius2001 »

Hallo Christian,

ein spätes Danke an deine Antwort, das hat mir (jetzt, nach langer Pause am Projekt) sehr weitergeholfen. Ich hatte alle Initialisierungen in DLLActivate , und nur einen Teil davon in DLLCreate kopiert....

Danke!
Antworten