C++ Wrapper für Dll
-
Hallo. Ich habe ein C++ code geschrieben. Jetzt muss ich aus mein file.cpp ein file.dll machen. Ich weiss nicht wie soll ich file_wrapper schreiben.
Hier ist main () für mein Code:
int main() { VEMEMA vemema; vemema.initialize("mix1.dat"); int k = 10; //Definition der Gridpunkte vemema.do_vem(k, tol); }Also ich rufe benutzte datei mix1.dat und rufe eine Methode vemema.do_vem(k,tol) auf.
Die Methode sieht so aus:
void VEMEMA::do_vem(int start_nr_cl, double tol)
{...
}Kann mir jemand helfen???

Danke
Marina
-
du musst deinen Code compilieren und dem Linker sagen dass er ne DLL draus machen soll - wie das geht hängt vom Compiler/Linker ab. Allerdings sollte die Methode in der DLL nicht unbedingt grade main() heißen.
-
ich muss eine
extern"C" {}für meine main() schreiben, damit ich mein file.dll weiter benutzen kann.
Wie macht man das??
Danke
-
Maryna75 schrieb:
ich muss eine
extern"C" {}für meine main() schreiben, damit ich mein file.dll weiter benutzen kann.
Wie macht man das??
DankeBennen die main erstmal um in irgendwas 'nicht-mainiges'. Und dann setzt du dem Prototyp der Funktion extern "C" voran, so dass sie exportiert wird. Im Anschluss kannst du dann in einem anderen Projekt diese Dll und diese Funktion laden (LoadLibrary, GetProcAddress).
-
extern "C" bewirkt nur C Linkage (auch wichtig), nicht aber ein Export.
Exports können z.B. mit __declspec(dllexport) oder einem DEF File gemacht werden.Simon
-
_matze schrieb:
Maryna75 schrieb:
ich muss eine
extern"C" {}für meine main() schreiben, damit ich mein file.dll weiter benutzen kann.
Wie macht man das??
DankeBennen die main erstmal um in irgendwas 'nicht-mainiges'. Und dann setzt du dem Prototyp der Funktion extern "C" voran, so dass sie exportiert wird. Im Anschluss kannst du dann in einem anderen Projekt diese Dll und diese Funktion laden (LoadLibrary, GetProcAddress).
Danke. ich brauche eine wrapper.cpp mit extrem "c" für mein cod, wiel ich muss weiter mein c++ code mit R (statistik) benutzen, und wrapper mit wrapper soll mein cod für R ausrufbar sein...
-
theta schrieb:
extern "C" bewirkt nur C Linkage (auch wichtig), nicht aber ein Export.
Exports können z.B. mit __declspec(dllexport) oder einem DEF File gemacht werden.Simon
Klar, mein Fehler...
-
Maryna75 schrieb:
Danke. ich brauche eine wrapper.cpp mit extrem "c" für mein cod, wiel ich muss weiter mein c++ code mit R (statistik) benutzen, und wrapper mit wrapper soll mein cod für R ausrufbar sein...
Sorry, aber ich weiß noch nicht mal ansatzweise, was du sagen willst.
-
_matze schrieb:
Maryna75 schrieb:
Danke. ich brauche eine wrapper.cpp mit extrem "c" für mein cod, wiel ich muss weiter mein c++ code mit R (statistik) benutzen, und wrapper mit wrapper soll mein cod für R ausrufbar sein...
Sorry, aber ich weiß noch nicht mal ansatzweise, was du sagen willst.
Sorry, ich meinte ein wrapper.cpp mit extern c , die hilft mir mein file.dll mit einer Statistischen software (R) ausrufen