Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Probleme bei Parameterübergabe aus C DLL in VB

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.09.2007, 14:07 Uhr
MurmelMaster



Hi,

bin leider etwas unerfahren was VB und DLL Importe angeht, weshalb die folgende Frage wohl ziemlich trivial ist. SuFu habe ich genutzt aber nichts gefunden. Es geht darum einen String an die DLL Funktion zu geben und dort mit Daten/Zeichen zu füllen. Hierzu kommt es allerdings zu einem Fehler wenn ich es ByRef übergebe und der String wird nicht mit den entsprechenden Daten gefüllt.

Ich habe folgende Funktion aus einer C DLL importiert.



Visual Basic:
Declare Function Dispatcher Lib "RSF_Assistent.dll" _
  Alias "_Dispatcher@12" _
  (ByVal dwMsg As Long, ByRef pszStringData As String, ByRef pliNumData As Long) As Long



Aufgerufen wird diese Funktion in VB wie folgt:




Visual Basic:
Dim liResult As Long
  Dim sDate As String
  Dim liDummy As Long
  liResult = Dispatcher(4, sDate, liDummy)



Die Dispatcher-Funktion :



C++:
long __declspec(dllexport) WINAPI Dispatcher(
DWORD  dwMsg,                     // Message
char   *szStringData,             // String data
long   *plNumValues               // Numeric data
){                                 // Dispatcher
switch(dwMsg){
case RSF_MSG_ONFILENEW: NewJob();
  break;
case RSF_MSG_ONFILELOAD: LoadFile(szStringData);
  break;
case RSF_MSG_ONFILESAVE: SaveFile(szStringData);
  break;
case RSF_MSG_GETDATE: GetDate(szStringData);
  break;
default: return(VB_TRUE);
}
return(VB_TRUE);
}                                 // Dispatcher



Letztendlich die GetDate-Funktion:



C++:
DWORD GetDate(char*  pcDate){
    pcDate = (char*)malloc(25*sizeof(char));
    sprintf(pcDate,"%s",strJobData.pcDate);
    return VB_TRUE;
}



Dadurch das ich Speicher alloziere, verhindere ich zwar den Fehler aber der String in Basic bleibt unverändert. Danke im Voraus für die Hilfe.

mfg
MM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: