Visual Basic 6.0 Problem beim .dll zugriff

OP #5143186
Lesenswert?

Hallo Liebe VB6 Experten,

ich habe probleme beim aufrufen der folgenden dll Funktionen in VB6

1.
DlnOpenUsbDevice()

Beschreibung der Function
    C/C++

DLN_RESULT DlnOpenUsbDevice(
   HDLN* deviceHandle
);

2.
DlnI2cMasterSetFrequency()

Beschreibung:
DLN_RESULT DlnI2cMasterSetFrequency(
   HDLN handle,
   uint8_t port,
   uint32_t frequency,
   uint32_t* actualFrequency
);

Hier meine Declaration für 1.:

Private Declare Function DlnOpenUsbDevice Lib "C:\dln.dll" (ByVal 
deviceHandle As Long) As Byte

Beim Aufruf in VB6:
DlnOpenUsbDevice(devicehandle)

kommt immer Fehler Variable nicht definiert und Programm stürzt ab.

Was mache ich falsch?
Gast #5143999
Lesenswert?

1.) Ist die DLL korrekt registriert (Regsvr32)
    >%systemroot%\SysWoW64\regsvr32 <vollständiger Pfad der DLL>

Public Declare Function DlnI2cMasterSetFrequency Lib "dln.dll" (ByVal 
deviceHandle As Long) As Byte


..stimmt nicht mit der Parameterliste der C-Funktion überein:

DLN_RESULT DlnI2cMasterSetFrequency(
   HDLN handle,
   uint8_t port,
   uint32_t frequency,
   uint32_t* actualFrequency
);
Gast #5144004
Lesenswert?

Mike schrieb:
> Ist die DLL korrekt registriert (Regsvr32)

warum sollte die dll registert werden müssen, es ist kein aktivX.


>..stimmt nicht mit der Parameterliste der C-Funktion überein:
ja, vermutlich

Er schreibt ja die Aufrufkonvention stimmt nicht.

https://stackoverflow.com/questions/6309237/how-would-you-declare-dll-import-signature

man müsste etwas mehr über die dll wissen.
Gast #5144101
Lesenswert?

Laut:

http://dlnware.com/sites/dlnware.com/files/downloads/dln_c_api.pdf
(ist doch diese DLL?!)

auf Seite 11 ist die Aufruf-Konvention für C/C++, das heisst "cdecl". 
Default ist unter Windows "stdcall". Kannst Du die Call-Convention 
irgendwie umstellen (anständige Programmiersprachen sollten das können).

Sei froh, dass eine Fehlermeldung kommt, sonst würde das ganze System 
crashen! Der Stack wird sonst nicht richtig aufgeräumt!

Ich habe mir wegen diesem Problem für die "mpusbapi.dll" eine 
Wrapper-DLL geschrieben.

Gruss Chregu

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren