kalder konventioner og dlls?

, hvordan skal jeg kalde en metode i dll skrevet i enten c og c + +.,,, betydningen af at konventioner,,,,, i delphi, når vi erklære en procedure eller funktion, kan vi fastsætte en konvention med et af de direktiver, register, pascal, cdecl, stdcall, og safecall.,,, alle disse konventioner, bestemme, i hvilken rækkefølge de parametre, er gået til proceduren /funktion.,,, lad mig ganske kort forklare, hvad disse konventioner.,,, de kalder konventioner gør brug af stak over parametre, frem og tilbage, bortset fra registret konvention.,,, register /pascal:,,,,, at disse konventioner over parametre (procedure /funktion), fra venstre til højre.den yderste venstre parameter er evalueret og bestod første og det yderste højre parameter er evalueret og vedtaget sidste.,,, og "register" kalder konvention gør brug af cpu registre, og derfor er hurtigere end andre konventioner.når du bruger denne konvention, vil der ikke være nogen stak oprettelse på runtime, hvis parametrene er mindre end eller lig med tre.hvis de parametre, er mere end tre, så de resterende parametre vil bruge skorstenen.,,, "register" konvention er misligholdelse i delphi, og det er den effektive af alle, fordi det ikke skaber /anvende stak til runtime.,,, "pascal" konventionen anvendes til kompatibiliteten bagud. de stak op, processen vil være automatisk for alle de konventioner, når de ringer tilbage undtagen "cdecl".,,, cdecl /stdcall /safecall:,,,,, at disse konventioner over parametre fra højre mod venstre.den yderste højre parameter er evalueret og bestod første,,, og den yderste venstre parameter er evalueret og vedtaget sidste.med denne konvention, der er at fjerne de parametre fra skorstenen, når de ringer tilbage.så det er det ansvar, der påhviler den, der ringer.,,, hvorfor skriver jeg disse enkle ting i detaljer?,,,, ja.det vil være meget nyttigt, når du skriver dll enten i delphi og adgang i delphi, eller for at få adgang til et dll affattet på andre sprog.,,, når du skriver en funktion /procedure i en dll i delphi, vil du være med til konventionen for hver.også når du kalder disse funktioner /procedurer fra en ansøgning gennem enten statisk belastning eller dynamisk belastning, du er nødt til at præcisere, hvilken type kalder konvention.,,, når du ringer til en dll skrevet i enten c og c + +, er man nødt til at bruge "cdecl" konvention.ellers, vil ende i "adgang krænkelse" problemer og undertiden anvendelsen kan styrte ned.også dll, du ringer, bør være med at finde vej.,,, jeg stod over for et problem i mit projekt, netop på grund af denne til konventionen.i min ansøgning, jeg bliver nødt til at ringe til en metode i c dll.jeg har kopieret det dll i min maskine.så jeg erklærede alle metoderne i dll i delphi og prøvede at ringe til en af dem.når jeg forsøger at få adgang til en metode, jeg har "adgang krænkelse" nogle gange ansøgningen hang og nogle gange hele anvendelsen styrtede ned.jeg kiggede ind i delphi hjælp og har løsningen med at konvention.så jeg erklærede hver metode i dll i delphi med "cdecl" direktiv.det fungerede fint.så glem ikke at få dette direktiv i hver metode opkald fra en dll skrevet i c /c + +.,,, nogle gange tilbage, jeg har set en person, der anmoder om dette problem i det forum, hvor ringe en metode i dll skrevet i c /c + +.det er den løsning,.,,, nyd det!!!,,,.,,, magesh.



Previous:
Next Page: