Moin, gewöhnlich nutze ich Java und unterstütze dies wenn notwendig mit C dlls. Für ein Projekt muß ich aber C dlls für Visual Basic schreiben. Daran bin ich bisher gescheitert und auch die Suche bei Google hat nichts taugliches erbracht. Ich benutze den LCC-Compiler. Wie kann ich da DLLs schreiben, auf die Visual Basic auch zugreifen kann? Gruß, Moi
Das ist im Grunde gar nicht so wild. Ich hoffe jedenfalls, Du redest von VB6: - Die Funktion muß der WINAPI Aufrufkonvention entsprechen. Zur Zeit ist das __sdtcall. - Die Funktion muß exportiert werden; der LCC kennt hierzu das Schlüsselwort __declspec. Eine einfache Funktion sieht dann z.B. so aus: int WINAPI __declspec(dllexport) MyAdd(int a, int b) { TCHAR szResult[88]; wsprintf(szResult, TEXT("%d + %d = %d"), a, b, a + b); MessageBox(NULL, szResult, NULL, MB_OK); return a + b; } Der Name, unter dem die Funktion exportiert wird, wird vom Compiler 'verwurstelt'. Schau also nach, unter welchem Namen tatsächlich exportiert wird. Dazu kannst Du beispielsweise den Dependency Walker verwenden, zu finden hier: http://www.dependencywalker.com/ Jetzt kannst Du die Funktion aus VB aufrufen: Private Declare Function MyAdd Lib "dlltest.dll" Alias "_MyAdd@8" (ByVal a As Long, ByVal b As Long) As Long Private Sub Command1_Click() MyAdd 2, 3 End Sub Und wie ich vorhin noch erfahren habe, hat der LCC irgendwo einen Schalter, um das Mangling zu beeinflussen (irgendwo in den Projekt-Konfigurationen -> Linker -> Disable Underscores in exports (oder so ähnlich)). Wenn das funktioniert, kannst Du für diese Funktion das Alias einsparen. Da ich den LCC noch nie wirklich benutzt habe, kann ich das leider nicht genau sagen. Ich kann aber nur dringend raten, das Ganze in ein COM-Objekt zu verbasteln. Das macht das Leben für alle einfacher. Allerdings solltest Du dafür C++ anstelle von C benutzen.
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.