Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » DLL Funktionsnamen bei C++ Compilierung

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
07.09.2007, 12:13 Uhr
MurmelMaster



Hallo,

in der Suchfunktion habe ich viele verwandte Themen gefunden aber keines konnte meine Frage beantworten. Ich schreibe eine ziemlich einfache Win32 Dll in VC++6.0 und möchte daraus Funktionen in VB6.0 benutzen.

Eine Funktion als Beispiel:

long __declspec(dllexport) WINAPI Dispatcher
(
DWORD dwMsg, // Message
char *szPathProtFile, // String data
long *plNumValues // Numeric data
)
{ // Dispatcher
switch(dwMsg){
case RSF_MSG_ONFILELOAD: LoadFile(szPathProtFile);
break;
default: return(VB_TRUE);
}

return(VB_TRUE);
} // Dispatcher


Wenn ich die DLL mit dem C-Compiler übersetze bekomme ich den Funktionsaufruf der Form "_Dispatcher@12" in VB importiert. Nun möchte ich jedoch eine Klasse in der DLL nutzen und deshalb den C++-Compiler benutzen. Nach der Übersetzung mit diesem Compiler sieht der Funktionname in der DLL so aus: "?Dispatcher@@YGJKPADPAJ@Z". Nun bekomme ich weder mit dieser Form noch mit "Dispatcher" oder "_Dispatcher" die Funktion importiert. Er sagt mir wenn ich dann VB starte das der Einsprungpunkt dieser Funktion in der dll nicht gefunden werden konnte. Es wäre schön wenn mir jemand helfen könnte. Vielen Dank schon einmal im Voraus,

gruß
Mathias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.09.2007, 13:00 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du musst die Funktionen im C Stil exportieren. Das macht man für gewöhnlich indem man die Funktions bzw. Klassendefinitionen entsprechend markiert:


C++:
#if defined (__cplusplus)
extern "C" {            
#endif

long __declspec(dllexport) WINAPI Dispatcher();


#if defined (__cplusplus)                            
} /* extern "C" */
#endif

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.09.2007, 13:16 Uhr
MurmelMaster



Danke! Ich werde es asap ausprobieren, aber ich denke das wird das Problem lösen.

mfg
Mathias
 
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: