![]() |
Benötige Hilfe bei der Nutzung einer DLL
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe eine DLL um Daten mit einem externen Gerät auszutauschen. Eine Beispielanwendung in VB ist dabei, allerdings funktioniert diese nicht. :wall: Hier mal ein Ausschnitt aus der DLL:
Code:
Der Datentyp RC sieht bei mir so aus:
#pragma once
#ifdef LKIF2_EXPORTS #define EXP __declspec(dllexport) #else #define EXP __declspec(dllimport) #endif #include "Winsock2.h" // Return Code List typedef enum { RC_OK = 0x0000, // The operation is completed successfully. /////////////////////////////////////////////// // Communication error from controller notification // RC_NAK_COMMAND = 0x1001, // Command error RC_NAK_COMMAND_LENGTH, // Command length error RC_NAK_TIMEOUT, // Timeout RC_NAK_CHECKSUM, // Check sum error RC_NAK_INVALID_STATE, // Status error RC_NAK_OTHER, // Other error RC_NAK_PARAMETER, // Parameter error RC_NAK_OUT_STAGE, // OUT calculation count limitation error RC_NAK_OUT_HEAD_NUM, // No. of used head/OUT over error RC_NAK_OUT_INVALID_CALC, // OUT which cannot be used for calculation was specified for calculation. RC_NAK_OUT_VOID, // OUT which specified for calculation is not found. RC_NAK_INVALID_CYCLE, // Unavailable sampling cycle RC_NAK_CTRL_ERROR, // Main unit error RC_NAK_SRAM_ERROR, // Setting value error /////////////////////////////////////////////// // Communication DLL error notification // RC_ERR_OPEN_DEVICE = 0x2000,// Opening the device failed. RC_ERR_NO_DEVICE, // The device is not open. RC_ERR_SEND, // Command sending error RC_ERR_RECEIVE, // Response receiving error RC_ERR_TIMEOUT, // Timeout RC_ERR_NODATA, // No data RC_ERR_NOMEMORY, // No free memory RC_ERR_DISCONNECT, // Cable disconnection suspected RC_ERR_UNKNOWN, // Undefined error } RC; extern "C" { /////////////////////////////////////////////// // Other commands // // Opens the USB device. EXP RC WINAPI LKIF2_OpenDeviceUsb(); // Closes the currently open device. EXP RC WINAPI LKIF2_CloseDevice(); }
Delphi-Quellcode:
Die beiden Funktionen sehen bei mir aktuell so aus:
TKeyenceRC = (
// Return Code List RC_OK = $0000, // The operation is completed successfully. /////////////////////////////////////////////// // Communication error from controller notification // RC_NAK_COMMAND = $1001, // Command error RC_NAK_COMMAND_LENGTH, // Command length error RC_NAK_TIMEOUT, // Timeout RC_NAK_CHECKSUM, // Check sum error RC_NAK_INVALID_STATE, // Status error RC_NAK_OTHER, // Other error RC_NAK_PARAMETER, // Parameter error RC_NAK_OUT_STAGE, // OUT calculation count limitation error RC_NAK_OUT_HEAD_NUM, // No. of used head/OUT over error RC_NAK_OUT_INVALID_CALC, // OUT which cannot be used for calculation was specified for calculation. RC_NAK_OUT_VOID, // OUT which specified for calculation is not found. RC_NAK_INVALID_CYCLE, // Unavailable sampling cycle RC_NAK_CTRL_ERROR, // Main unit error RC_NAK_SRAM_ERROR, // Setting value error /////////////////////////////////////////////// // Communication DLL error notification // RC_ERR_OPEN_DEVICE = $2000,// Opening the device failed. RC_ERR_NO_DEVICE, // The device is not open. RC_ERR_SEND, // Command sending error RC_ERR_RECEIVE, // Response receiving error RC_ERR_TIMEOUT, // Timeout RC_ERR_NODATA, // No data RC_ERR_NOMEMORY, // No free memory RC_ERR_DISCONNECT, // Cable disconnection suspected RC_ERR_UNKNOWN // Undefined error );
Delphi-Quellcode:
Ist das so korrekt? Fehler bekomme ich nämlich keine beim Aufruf, einzig im ProcessMonitor wird mir beim Aufruf der Funktionen "NAME NOT FOUND" angezeigt (siehe ProcessMonitor.png).
const
DLLNAME = 'LKIF2.dll'; function LKIF2_OpenDeviceUsb: TKeyenceRc; stdcall; external DLLNAME; function LKIF2_CloseDevice: TKeyenceRC; stdcall; external DLLNAME; Kann mir da vielleicht jemand was zu sagen? Danke |
AW: Benötige Hilfe bei der Nutzung einer DLL
Eigentlich sollte Delphi auch sowas, wie "Prozedureinsprungpunkt nicht gefunden" rauswerfen. :gruebel:
Sicher daß diese Funktion genau als "LKIF2_OpenDeviceUsb" in der DLL exportiert werden? Andere Sprachen hängen gerne mal Prefixe und vorallem Sufixe an den Exportnamen. (meißt wird gerne noch eine Parametersignatur angehängt) [edit] Zitat:
Tja, da scheint wohl irgendein Registryzugriff in dieser Funktion nicht ordentlich laufen. z.B. Beim Versuch mit Schreibrechten zugreifen zu wollen, obwohl ein "Benutzer" in HKLM nur Leserechte besitzt. Du kannst ja mal versuchen deine Anwendung mit Adminrechten zu starten. |
AW: Benötige Hilfe bei der Nutzung einer DLL
Adminrechte bringen keine Veränderung, habe ich auch schon getestet.
Ich gehe davon aus, dass der Hersteller da nochmal ran muss. |
AW: Benötige Hilfe bei der Nutzung einer DLL
hoi,
funktioniert es wenn Du die Aufrufkonvention von "stdcall" nach "cdecl" änderst ? <OffTopic> Ist das LKxxx Gerät ein Laser ? Ich meine der Hersteller hat ja auch ne eigene Software mit dem "Navigator". Wenn seine Anwendung mit der "LKIF2.dll" läuft - müsste es ja generell klappen oder ? </OffTopic> cya |
AW: Benötige Hilfe bei der Nutzung einer DLL
Ja, es ist ein Laser. Die LK-Navigator Software funktioniert, parametrieren kann ich das Gerät auch.
Die DLL habe ich vom Support bekommen, damit sollte ein Datenaustausch mit dem Auswertegerät möglich sein. Eine Beispielanwendung in VB6 ist auch dabei, nur funktioniert diese genauso wenig. :( Die LK-Navigator Software nutzt die LKIF2.DLL nicht. |
AW: Benötige Hilfe bei der Nutzung einer DLL
Hallo,
wenn die VB-Anwendung nicht läuft, sind die Schuld. Heiko |
AW: Benötige Hilfe bei der Nutzung einer DLL
Kann es sein dass ein Paket/DLL fehlt/nicht registriert ist?
|
AW: Benötige Hilfe bei der Nutzung einer DLL
Es scheint wirklich an der DLL zu liegen. Am Montag weiß ich mehr, da möchte sich der Keyence-Entwickler bei mir melden. :-D
Alles was ich bekommen habe ist ein Archiv mit 3 DLLs (LKIF2.DLL und 2 weitere, die von der LKIF2.DLL benötigt werden) eine HTML-Hilfe zu den Funktionen der DLL und die Beispielanwendung in VB6. |
AW: Benötige Hilfe bei der Nutzung einer DLL
mal versuchsweise regsvr32 auf die DLL's losgelassen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz