| |
VB.NET - FortgeschritteneDLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: Peter S. | Datum: 17.08.16 11:00 |
| Hallo,
ich habe hier ein Netzteil mit USB-Anschluss. Dazu gibt es einen Treiber und eine DLL.
Der Treiber funktioniert und das NT wird im Gerätemanager angezeigt (XP und Win7).
Der Aufruf von einem VB Programm funktioniert unter XP mit folgendem Code:
<DllImport("USB_Support.dll", EntryPoint:="USB_GetDeviceList", _
CallingConvention:=CallingConvention.StdCall)>
Public Shared Function USB_GetDeviceList(ByVal devList(,) As UInt16) As _
UInt16
End Function Auf Win7 funktioniert weder die unter XP kompilierte .exe noch das Neukompilieren des Projektes.
Fehlermeldungen werden nicht ausgegeben, die Funktionsaufrufe haben einfach keinen Effekt.
Laut Hersteller gibt es keine Aktualisierung für Win7, aber wenn der Treiber funktioniert und das Gerät angezeigt wird, dann gibt es doch noch Hoffnung, oder?
Hat jemand eine Idee, was am Code (oder in den Projekteinstellungen) geändert werden muss, damit die DLL auch unter Win7 funktioniert?
Danke
Peter | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: visualfx | Datum: 17.08.16 15:54 |
| Hallo Peter,
ich würde als erstes mal überprüfen, ob Deine DLL unter Windows 7 überhaupt korrekt geladen werden kann.
Das kannst Du mit dem Dependency Walker erledigen: http://www.dependencywalker.com/depends22_x86.zip
Der Dependency Walker muß nicht installiert werden! Einfach die obige ZIP-Datei in einen eigenen Ordner herunterladen und entpacken.
Dann depends.exe starten und Deine DLL öffnen.
Gruß, Stefan
Beitrag wurde zuletzt am 17.08.16 um 15:57:49 editiert. | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: visualfx | Datum: 17.08.16 16:03 |
| noch ein kleiner Nachtrag:
außerdem spielt es noch eine entscheidende Rolle wo sich Deine DLL befindet!
1) in einem System-Ordner von Windows, hier gilt:
- wenn es sich bei Deiner DLL um eine echte 64 Bit-DLL handelt, muß sie sich im System32-Ordner befinden !!!
- wenn es sich bei Deiner DLL um eine 32 Bit-DLL handelt, muß sie sich im SysWOW64-Ordner befinden !!!
2) oder in einem Ordner außerhalb vom Windows-Ordner, z. B. im Ordner des eigenen Programms ist natürlich auch OK
Gruß, Stefan
Beitrag wurde zuletzt am 17.08.16 um 16:26:48 editiert. | |
Ursache gefunden ??? | | | Autor: visualfx | Datum: 31.08.16 09:25 |
| Hallo Peter,
- bist der Ursache für Dein Problem auf die Schliche gekommen ???
- poste doch mal den aktuellen Stand der Dinge, das interessiert sicher nicht nur mich, sondern auch andere Forums-Mitglieder
Gruß, Stefan | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: Peter S. | Datum: 01.09.16 16:41 |
| Der Dependency Walker bringt mir den Fehler, dass folgende DLL fehlen:
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL Laut Google ist das aber ein bekannter "Fehler", den der Dependency-Walker immer auf Systemen neuer als WinXP anzeigt.
Ich kann das auch mit anderen DLL aus dem Ordner System32 auf meinem Win 7/64 nachvollziehen.
Es bleibt also die Frage, liegt es
* am Treiber,
* an der DLL oder
* am Aufruf im Programm?
Leider(?) kommt keine Fehlermeldung die weiterhelfen könnte. | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: visualfx | Datum: 01.09.16 18:11 |
| Hallo,
- wichtig ist zunächst einmal nur, daß im Dependency-Walker alle DLLs [u]direkt unter Deiner DLL [u]ohne Fehler angezeigt werden
- daß z. B. die API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL angeblich nicht geladen werden kann, ist kein Fehler vom Dependency-Walker. Du kannst diese DLL ja mal auf Deinem PC suchen, Du wirst sie nicht finden . . .
- wie lautet eigentlich die exakte Schnittstellen-Definition vom Hersteller für die Funktion USB_GetDeviceList ???
- und noch folgende Frage: ist die DLL USB_Support.dll eine 32 Bit-DLL - und falls ja: liegt sie im SysWOW64-Ordner ???
Gruß, Stefan
Beitrag wurde zuletzt am 01.09.16 um 18:24:15 editiert. | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: Peter S. | Datum: 02.09.16 08:25 |
| Die Definition habe ich gerade nicht zur Hand, aber unter Win32 funktioniert das Programm ja so.
Laut Hersteller ist es eine 32 Bit DLL. Sie liegt im /bin/Debug Ordner, bei der .exe
Wenn ein altes Programm unter Win64 nicht mehr läuft, kann man doch den Kompatibilitätsmodus benutzen. Ginge nicht sowas? Evtl. gleich beim Kompilieren? | |
Re: DLL Aufruf funktioniert unter XP aber nicht unter Win7 / 64 | | | Autor: visualfx | Datum: 02.09.16 09:01 |
| 1) Daß ein DLL-Aufruf unter WinXP funktioniert, ist noch lange kein Beweis.
Gerade bei der Deklaration von externen Funktionen hatte ich auch schon den Fall, daß es jahrelang bis WinXP wunderbar funktioniert hat - und dann ab WinVista / Win7 "plötzlich" und "ganz unerwartet" nicht mehr.
Wir bräuchten also schon die genaue (C-/C++-) Schnittstellen-Definition
2) Vom Kompatibilitätsmodus von Windows halte ich persönlich überhaupt nix !!!
Der Kompatibilitätsmodus versucht nur Programmierfehler zu vertuschen, wie z. B. ein normalerweise nicht zulässiges Schreiben in den Programme-Ordner oder in einen Windows-Ordner (Windows / System32 / SysWOW64 / etc.)
Selbst wenn Du unter Win7 einstellt: Windows XP SP3 wird aus Deinem Windows 7 noch lange kein Windows XP mit SP3 !!!
Was Microsoft beim Kompatibilitätsmodus überhaupt alles so intern treibt, wird auf immer sein Geheimniss bleiben . . .
3) Da diese DLL eine 32 Bit-DLL ist, mußt Du beim Compilieren natürlich auch eine 32 Bit-Exe erzeugen.
Gruß, Stefan
Beitrag wurde zuletzt am 02.09.16 um 09:05:30 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|