vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Allgemeine Diskussionen
Re: String-Parameter bei C-DLL's 
Autor: flash
Datum: 04.04.02 13:52

Hi Anja,
falsche DLL-Aufrufskonventionen entstehen immer dann, wenn die Funktion anders in der DLL beschrieben ist, als du es mit "declare function..." in deiner vb-anwendung getan hast. Vielleicht hat ja deine Funktion einen Rückgabewert!

Kleines Beispiel:

Die DLL...

#include
#include

char* __stdcall blaMsg (int wert)
{
char tmp[5];
MessageBox (NULL, itoa (wert,(char*) &tmp,10),"blaMSG-DLL",0);
return "test";
}

Die DLL-Definition-Datei...

EXPORTS
blaMsg @1

Und nun noch VB...

Option Explicit

Private Declare Function blaMsg Lib "adll.dll" _
(ByVal wert As Integer) As Long <------- Der springende Punkt!!!

Private Sub cmdDLL_Click()
Call blaMsg(5)
End Sub

--------------------------------------------------------------
C++ kennt tatsächlich nicht die Strings von VB, bzw. umgekehrt. Hierfür gibt es aber von Windows selbst geeignete Datentypen: BSTR-Strings
Jedoch sind die im Prinzip nur für die Rückgabe interessant. Wenn du nur reine Strings übergeben willst funktioniert das wie oben mit char*. So wird deine DLL wahrscheinlich auch aufgebaut sein. So nun zur Rückgabe: Wie du oben in der DLL sehen kannst, wird ein Pointer auf ein Char-Array zurückgegeben. Denn C kennt normalerweise nur Char-Arrays und keine Strings. Versucht man jedenfalls den Rückgabetyp char* in VB aufzufangen, gibts nen Crash und das Programm stürtzt ab.
->> Lässt man den Rückgabetyp in VB weg, so gibts einen "DLL-Aufrufkonvention"-Fehler. Also schreib einfach irgendwas hin. Wie oben beispielsweise "as long". Völlig wurscht, du musst das ja nicht benutzen. Danach die Methode am besten noch mit "Call" aufrufen.
Dann funktionierts bei mir jedenfalls. Das Beste wird allerdings sein, dass du dir eine genaue Funktionsbeschreibung von der DLL besorsgt. Hoffe ich konnte dir helfen

cu flash.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
String-Parameter bei C-DLL's67Anja03.04.02 08:59
Re: String-Parameter bei C-DLL's418ModeratorDieter03.04.02 09:20
Re: String-Parameter bei C-DLL's49Anja03.04.02 09:41
Re: String-Parameter bei C-DLL's407ModeratorDieter03.04.02 09:51
Re: String-Parameter bei C-DLL's43Anja03.04.02 09:59
Re: String-Parameter bei C-DLL's418ModeratorDieter03.04.02 10:06
Trotzdem danke...44Anja03.04.02 10:09
Re: Trotzdem danke...47Fx03.04.02 13:25
Auch schon versucht...57Anja03.04.02 16:07
Re: String-Parameter bei C-DLL's46DanielLorbach03.04.02 14:23
Re: String-Parameter bei C-DLL's47Anja03.04.02 16:14
Re: String-Parameter bei C-DLL's38DanielLorbach03.04.02 16:51
Re: String-Parameter bei C-DLL's34DanielLorbach04.04.02 11:13
Leider keinen Erfolg34DanielLorbach05.04.02 13:40
Re: String-Parameter bei C-DLL's459unbekannt03.04.02 19:06
Re: String-Parameter bei C-DLL's64Anja04.04.02 08:54
Re: String-Parameter bei C-DLL's51flash04.04.02 13:52

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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