| |

Visual-Basic EinsteigerAufrufkonvention für C-dll | |  | Autor: Joachim | Datum: 19.11.02 11:53 |
| Hallo zusammen,
ich hab da ein Problem beim Aufruf einer C-DLL. Die Definition laut Header-Datei sieht dabei so aus :
struct DOK {
char KNR_Nachname[49];
char BLZ_Vorname[49];
char Geburtsdatum[11];
char Verbundart[13];
char DokTypText[13];
signed short Dok_Typ_NR;
signed short Dok_Format;
signed short Dok_Space_KB;
signed short Dok_Seiten_Anz;
char Dokument_Datum[11];
char Konto_Datum[11];
char Name_Erfasser[80];
char ItemID[17];
char Zuordnungsart[13];
char Rechercheart[2];
char Reg_Name[13];
char Hauptreg_Name[13];
char Userid[30];
char FAX_NR[40];
};
typedef struct DOK DOKSTRUCT;
typedef struct DOK *PDOK;
struct ANZLISTE {
unsigned short usFehlercode; // PMS
unsigned short usFehlerKlasse; // PMS
char szFehlerMeldg[255]; // PMS
unsigned short usSatzZahl; // Anzahl ItemIDs
PDOK pDaten;
};
typedef struct ANZLISTE ANZLISTSTRUCT;
typedef struct ANZLISTE *PANZLISTE;
/*----------------------------------------------------------------------------*/
/* Prototyp anz2_main */
/*----------------------------------------------------------------------------*/
__declspec(dllexport) int __cdecl anz2_main(char*, int, PANZLISTE, char*);
Das ganze habe ich in VB wie folgt nachgeahmt (die Def. der Dok struct hjab ich mir einfach mal gespart, weil ja sowieso nur pointer übergegeben werden):
Public Type structAnzListe
iFehlercode As Integer
iFehlerklasse As Integer
sFehlermeldung As String * 255
ptrDaten As Long
End Type
Public tAnzListe As structAnzListe
Public ptrAnzListe As Long
Public Declare Function anz2_main Lib "c:\winnt\pms_komm.dll" (ByVal ptrUser As String, iDienst As Integer, ptrAnzListe As Long, ByVal ptrPassword As String) As Integer
Das ganze möchte ich jetzt mit folgendem Code zum Laufen bringen :
Dim rc As Integer
Dim iDienst As Integer
Dim User As String
Dim Password As String
Dim testAnzliste As structAnzListe
User = "haemel"
Password = "testPW"
iDienst = 6
ptrAnzListe = VarPtr(tAnzListe)
rc = anz2_main(User, iDienst, ptrAnzListe, Password)
Tja, und dann kommt Fehlernummer 49 (Falsche DLL-Aufrufkonvention).
Übergabe ich anstatt "ptrAnzListe = VarPtr(tAnzListe)" nur einen initialisierten long, kommt der Fehler mit der Aufrufkonvention nicht, allerdings krachts dann auch ordentlich, was ich irgendwie noch verstehe. Also warum klappt der Aufruf mit VarPtr nicht, wer kann mir weiterhelfen???
Danke für jedes Posting,
Joachim |  |
 Aufrufkonvention für C-dll | 76 | Joachim | 19.11.02 11:53 |
 | 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 |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) 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
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|