ich habe eine DLL geschrieben und habe die Funktionen folgend deklariert: extern ”C” __declspec (dllexport) void test(int i); aber was bedeutet das im einzelnen? Vor allem was bedeutet
extern ”C” -Für C++-Compiler der Hinweise, den Methodenname so zu nehmen wie er ist und nicht zu "mangeln" -__declspec() ist eine Direktive für den Compiler, ich glaube nur MS; dllexport heißt, das diese Funktion exportiert (in die dll) werden soll. -- Wer früher stirbt ist länger tot.
Der Compiler "generiert" bei C++-Funktionen Namenserweiterungen, z.b aus test() macht er testirgendwas(). Da das aber bei Dll's problematisch sein kann (wenn man z.b manuell die funktionen laden will mit GetProcAddress, usw) dann sagt man es dem Compiler das er die Funktion außerhalb als C-Code behandeln soll (da erweitert/mangled er nix). darum extern "C"
__declspec(dllexport) ist eine Microsoft Visual C++ Anweisung die dem Compiler mitteilt das das eine Funktion zum exportieren ist bzw das er diese exportieren soll. Diese Dinge sind bei den meisten Compilern nicht einheitlich! __declspec funzt eben nur bei MS VC! -- class God : public ChuckNorris { };