Laden...

Wie binde ich die mitgelieferte DLL in mein Programm ein?

Erstellt von cedi vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.238 Views
C
cedi Themenstarter:in
2 Beiträge seit 2009
vor 15 Jahren
Wie binde ich die mitgelieferte DLL in mein Programm ein?

Hallo zusammen,

ich bin neu hier im Board. Leider habe ich über die Suche nicht das passende gefunden, was nicht zuletzt daran liegt, dass ich überhaupt nicht richtig weiss, nach was ich suchen soll.

Ich habe mir einen USB PowerSwitch gekauft, mit welchem man 4 Steckdosen unabhängig per USB ein- oder ausschalten kann. Mitgeliefert wurde eine Software um die Steckdosen manuell oder zeitgesteurt zu schalten, plus eine DLL und deren Anleitung.

Da ich ein eigenes Programm in C# geschrieben habe welches die Steckdosen ein und ausschalten soll, kann ich die mitgelieferte Software nicht gebrauchen.

Nun meine Fragen:
Wie binde ich die mitgelieferte DLL in mein Programm ein?
Wenn ich über "Verweis hinzufügen" die DLL auswähle kommt folgender Fehler:

Es konnte kein Verweis auf "C:/Programme/Power Switch USB 4/dll10544.DLL hizugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder COM-Komponente ist. 🤔

Ich freue mich auf eine Antwort.
Diesen Samstag sollte mein Projekt für einen Event stehen. 🙁

Hier noch drei Links:
Die Produktinformation: http://www.remada.ch/index.php?option=com_content&task=view&id=46&Itemid=75
Die Bedienungsanleitung: http://www.remada.ch/images/stories/remada/produkte/powerswitch/Power%20Switch%20Software%20V2.pdf
Die DLL: http://www.kra.ch/cedric/dll10544.DLL

Mfg Cedric

S
8.746 Beiträge seit 2005
vor 15 Jahren

Naja, DLL mit ins Anwendungsverzeichnis kopieren und DllImport-Wrapper schreiben:

[DllImport("dll10544.DLL")]
private static extern byte R10544_GetDeviceState(byte DeviceIndex);

[DllImport("dll10544.DLL")]
private static extern byte R10544_SetRelais(byte DeviceIndex, byte Relaisbits);

[DllImport("dll10544.DLL")]
private static extern byte R10544_GetDeviceCount();

R10544_GetDllVersion() würd ich nicht benutzen, produziert ein Memory-Leak.

C
cedi Themenstarter:in
2 Beiträge seit 2009
vor 15 Jahren

Hallo svenson,

vielen Dank für dein Vorschlag.
Leider bekomme ich beim Dllimport (bzw. beim Ausführen) folgenden Fehler:

Die DLL "dll10544.DLL": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.

Ich habe mit depends.exe die dll überprüft und scheinbar möchte diese auf eine weitere dll zugreifen, welche sich nirgends au meinem System befindet.

Die dll heisst wdapi810.dll

Google hat nichts dazu gefunden. Kennt jemand das Problem?

Mfg Cedi

11 Beiträge seit 2007
vor 15 Jahren

Hallo auch,

ich hab das gleiche Problem,
allerdings hat es vorher schonmal funktioniert.
Beim Umstieg von Vista32 auf Vista64 funktionierts nicht mehr.

Vielleicht hat ja jemand ne Ahnung woran das liegt (außer der Umstieg) bzw. wie man das in den Griff kriegen kann.

MfG Todesengel

S
248 Beiträge seit 2008
vor 15 Jahren

Hallo Todesengel,

vermutlich ist diese dll für 32bit compiliert. Die .NET Anwendung passt sich allerdings dem OS an und läuft nun als 64bit, was so nicht funktionieren kann, da Pointer unter 32bit und 64bit unterschiedlich groß sind.

Entweder das .NET Programm fest für 32 bit compilieren oder eine 64bit Version der dll verwenden.

Spooky

11 Beiträge seit 2007
vor 15 Jahren

Hallo Spook

Danke für den Tip, jetz funktionierts.
Das war meine Rettung vor der Verzweiflung.

MfG Todesengel