Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   performance c++ <> Delphi (https://www.delphipraxis.net/193516-performance-c-delphi.html)

TiGü 10. Aug 2017 14:53

AW: performance c++ <> Delphi
 
Zitat:

Zitat von EWeiss (Beitrag 1378513)
Zitat:

Zitat von TiGü (Beitrag 1378484)
Was ist denn MF? Media Foundation?

Richtig!
Es geht ja um das abspielen von Media Dateien.

Entweder hat er was nicht verstanden oder du oder ihr redet aneinander vorbei.

Die flachen Funktionen und auch die Methoden vom Media Foundation SDK sind alle mit stdcall; getaggt.
Ich denke, er meinte eher die Art und Weise, wie mit Callbacks im Umfeld von Medien-abspielen umgegangen wird.

EWeiss 10. Aug 2017 14:59

AW: performance c++ <> Delphi
 
Nö.. er meint er hat sehr viel Erfahrung mit Callbacks mehr ist da nicht zu sagen.
Er lässt sich halt aufgrund seiner Erfahrung (die er hat) einfach von einem Anfänger C++ nichts sagen)
Das ist das schwierige bei solchen Leuten.

gruss

EWeiss 10. Aug 2017 15:36

AW: performance c++ <> Delphi
 
Zitat:

Zitat von Zacherl (Beitrag 1378514)
Zitat:

Zitat von EWeiss (Beitrag 1378465)
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
Delphi-Quellcode:
stdcall
weg oder ändert es zu
Delphi-Quellcode:
cdecl
, dann wird unmittelbar nach dem Ausführen von
Delphi-Quellcode:
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
Delphi-Quellcode:
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

Zacherl 10. Aug 2017 16:06

AW: performance c++ <> Delphi
 
Zitat:

Zitat von EWeiss (Beitrag 1378522)
Zitat:

That is perfectly valid for 32-bit, but i am working in 64-bit that is using only FASTCALLS

Wenn er ausschließlich für 64-Bit kompiliert, dann hat er recht - dann macht es zumindest keinen Unterschied. Ist trotzdem kein guter Stil, weil er so immer alles ändern muss, falls er doch mal für eine andere Plattform builden will.

EWeiss 10. Aug 2017 16:11

AW: performance c++ <> Delphi
 
Zitat:

falls er doch mal für eine andere Plattform builden will.
NA ja egal will er nicht..
Interessiert sich nicht mehr für 32BIT.

Das Problem dabei ist nur wenn er seinen Source schon veröffentlicht und andere hätten lieber 32Bit
weil ihr System nun mal auf 32Bit ausgelegt ist dann müssen diese alles ändern ;)

Nicht mein Problem.

gruss

OlafSt 14. Aug 2017 23:07

AW: performance c++ <> Delphi
 
Oder man nimmt eine andere Bibliothek. Würde ich jedenfalls machen, wenn sich einer so betonköpfig verhält :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz