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
Problem mit Output-Plugins unter Windows10
-
- Lüsterklemmenschrauber
- Beiträge: 35
- Registriert: 20.01.2009, 09:28
- Christian
- PC_DIMMER-Entwickler
- Beiträge: 1856
- Registriert: 12.11.2007, 09:30
- Wohnort: Knw.-Remsfeld
- Kontaktdaten:
Re: Problem mit Output-Plugins unter Windows10
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
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
-
- Lüsterklemmenschrauber
- Beiträge: 35
- Registriert: 20.01.2009, 09:28
Re: Problem mit Output-Plugins unter Windows10
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!
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!