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?
Matze D. schrieb: > Private Declare Function DlnOpenUsbDevice Lib "C:\dln.dll" (ByVal > deviceHandle As Long) As Byte ich vermute mal das byVal falsch ist, es wird ein zeiger gebraucht als auf jeden Fall ByRef.
Danke für den Hinweis. Jetzt bekomme ich die Meldung: Falsche DLL-Aufrufkonvention (Fehler 49)
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 );
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.