| |
|
|
- page 1 - |
|
Christian Schneider | allô gens,
je frickle déjà une ganze Weile daran rum une Dll à l' courir trop bekommen (siehe Anhang).
Je poste parfois une qui Codes (en gibt es ne la quantité, avec qui Gemeinsamkeit vous funkionieren pas )
là qui banque de données erstellt wird (hat sa Richtigkeit, si encore pas vorhanden) et anschließend qui Interpreter abschmiert, vais je la fois en aus es liegt am Rückgabewert.
qui Doku zur Funktion findet sich ici: [...]
Salut Christian
P.S. Hatte avec dll´s bisher pas wirklich viel am Hut ;)
Nutze qui 11Sous12 |
|
|
| |
|
|
|
| |
|
- page 1 - |
|
Jac de Lad | Erklärt la fois s'il te plaît quelqu'un den Vorteil de cdecl? et qui Unterschiede? et überhaupt??? |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
Christian Schneider | là fällt mir spontan seulement une un:
@JAC: [...] |
|
|
| |
|
|
|
Jac de Lad | Aha, hat alors pour den Ottonormalprofaner aucun Auswirkungen?! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
Christian Schneider | non. Außer cela maintenant plus dll´s nativ funkionieren comme bisher.
@Roland: quoi si on plusieurs dll´s dans einem Programme verwendet et un partie en per cdecl et autre per stdcall travailler? |
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
| Jac
Erklärt la fois s'il te plaît quelqu'un den Vorteil de cdecl? et qui Unterschiede? et überhaupt???
Laienhaft ausgedrückt pourrait on dire sur Asmebene gibt es aucun Funktionen et aucun Funktionsparameter - il y a mais Sprungadressen et une Stack. si on maintenant behauptet qui Code derrière den Sprungadressen entspricht einem Funktionscode ensuite wird qui Stack comme Parametermerker benutzt. on legt (push) alors Werte sur den Stack et springt (call) ensuite trop einer Sprungadresse. qui Code derrière elle nimmt qui Werte de Stack (pop) um cet trop verarbeiten. qui Vollständigkeithalber pourrait on erwähnen cela un möglicher Rückgabewert einer solchen Funktion grundsätzlich im eax-Register hinterlegt wird bevor qui Funktion per ret den Rücksprung veranlasst.
si stdcall ou bien cdecl legt hierbei z.B. qui Reihenfolge fest avec qui qui Werte vom Stack pris volonté. chez cdecl volonté qui Params arrêt dans umgekehrter Reihenfolge trop stdcall sur den Stack emballé.
Je après que avec quel Compileroption z.B. une DLL kompiliert wurde (ou bien comment qui asm gestrickt ist) muss on donc avec cdecl ou bien stdcall appel. |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
Jac de Lad | et wozu wurede cela eingeführt? pourquoi ist cela pas unique?? |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
| Jac
et wozu wurede cela eingeführt? pourquoi ist cela pas unique??
Ideologisch betrachtet ou bien technique? |
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
RGH | Christian Schneider
non. Außer cela maintenant plus dll´s nativ funkionieren comme bisher.
@Roland: quoi si on plusieurs dll´s dans einem Programme verwendet et un partie en per cdecl et autre per stdcall travailler?
Es doit seulement avant dem Aufruf qui jeweiligen Funktion (alors pas déjà chez DEF, ImportFunc ou bien ImportDLL) qui richtige Aufrufmodus eingestellt son. Derzeit volonté mais seulement CDECL et STDCALL soutenu.
et qui CallBack-Funktionen sommes toujours im Windows-Standard STDCALL.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.01.2008 ▲ |
|
|
|
|
Michael Wodrich | et ... - C-Compiler benutzen CDECL - Windows benutzt STDCALL - Assembler peux beides.
c'est seulement un Pi-la fois-pouce Überblick. là viele Programmiersprachen cela Aufrufmodell libre choisir peut volonté très viele DLL arrêt Windows-konform angeboten - mais malheureusement pas alle (meist qui Interessantesten pas).
un Grund pour cela malheureusement pas: qui aus C her bekannten Funktionen avec beliebigen Parametern (int Anzahl, ...) gibt es seulement dans qui CDECL-variante.
belle Grüße Michael Wodrich
Autsch, cela gibts aussi alles chez Wikipedia - il faut sich seulement zum Lesen durchringen. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 12.01.2008 ▲ |
|
|
|
|
RGH | Michael Wodrich
et ... - C-Compiler benutzen CDECL - Windows benutzt STDCALL - Assembler peux beides.
un Grund pour qui verschiedenen Modelle ist, dass sich qui Compilerhersteller un Aufrufmodell pour ses intenen Funktionen ausdachten, longtemps bevor es Windows et/ou bien gemeinsam genutzte DLL donnais. qui devoir était toujours juste: qui paramètre mussten sur den Stack et anschließend musste derselbe wieder aufgeräumt volonté. seulement dans qui Reihenfolge qui paramètre et qui Frage, qui car eh bien pour Aufräumen zuständig ist (Funktion ou bien Aufrufer), donnais es différent Lösungen. et zur Beschleunigung übergab on aussi quelques paramètre per Register.
Moderne Compiler (aussi alle C et C++ Compiler) peut mais chez Erstellung de gemeinsam genutzen Bibliotheken angeben, quelle qui Aufrufkonventionen genutzt volonté. DELPHI benutzt z.B. defaultmäßig REGISTER (d.h. qui ersten paramètre volonté per Prozessorregister-Register transfert - cela spart Zeit et Stackspeicher), mais pour DLL peux on angeben, si on CDECL, STDCALL ou bien FARPASCAL nutzen veux. 32-Bit-Windows benutzt STDCALL, alors sollte on sous Windows nutzbare DLL vorzugsweise avec STDCALL kompilieren. (16-Bit-Windows nutzte FARPASCAL comme Aufrufkonvention. cet Konvention venez mais meines Wissens dans DLL pas plus avant.) CDECL findet on souvent chez dans C++ erstellten Bibliotheken, qui es, comment plan SQLite, pour Linux et Windows gibt.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 12.01.2008 ▲ |
|
|
|