Na ja seine Meinung ist halt das er schon sehr lange sich mit Callbacks beschäftigt
und MF das genauso machen würde deshalb will er stdcall nicht.
An deiner Stelle würde ich hier keinen Support mehr geben, da er sich zu
100% irgendwo den Stack zerschießt. Da ist es kein Wunder, dass überall komische Exceptions rumfliegen.
Sollte auch für ihn ganz einfach zu testen sein. Wenn Typedef und Funktion die gleiche Calling Convention besitzen, funktioniert alles wunderbar:
Code:
typedef void (__stdcall *TestFuncPtr)(const char*);
void __stdcall func(const char* text)
{
puts(text);
}
int main()
{
// Ohne das reinterpret_cast weigert sich mein VS sogar schon den Code zu kompilieren.
// (Was auch das korrekte von mir erwartete Verhalten darstellt)
// Bei gleichen Calling Conventions kann der Cast weggelassen werden.
TestFuncPtr test = reinterpret_cast<TestFuncPtr>(&func);
test("test");
return 0;
}
Lässt er jetzt an
einer der Stellen das
stdcall
weg oder ändert es zu
cdecl
, dann wird unmittelbar nach dem Ausführen von
test
der Stack corrupted (was mir mein VS im Debug Mode sogar auch ordnungsgemäß in einer Fehlermeldung mitteilt).
Es muss immer an beiden Stellen gleich sein. Die erste Stelle ist aber in deinem Fall deine
Dll, weshalb du ihm die
stdcall
Convention vorgibst. Daran muss er sich halt halten. Ob er will oder nicht. Sonst kracht es.
Antwort!
Zitat:
That is perfectly valid for 32-bit, but i am working in 64-bit that is using only FASTCALLS
gruss