Sziasztok.
Ketten dolgozunk egy feladaton, ami egy régebben megírt (és alaposan kituningolt) Delphi kódra épül, na eddig nem is volt baj (itt jöttem én a képbe :D ), ugyanis én eddig csak linux alá írtam programot win alá még soha, ergo a delphiről annyit tudok hogy van, és volt linuxos klónja a kylix de a kutyának nem kellet (azt hiszem 3XX-darabot adtak el belőle 1 év alatt).Na szóval a lényeg, egy elég komoly eszköz vezérlését szeretnénk megoldani, de nagyon sok számítást igénylő mestint progi működteti a vezérlést (Ezt írtam én C-ben). Az egyik részét átkódoltuk delphibe, de annyira lassú lett, hogy használhatatlan(Kb a sebesség az 1/2 1/3-ra esett vissza, biztos nem a lehető legjobb mgolás, mert a kollegám grafikai elemeket kódolt eddig, én meg C + egy minimális asm). Na akkor jött az ötlet, hogy elvileg megoldható az, hogy az én kódomat mint dll-t fordítjuk le, és csak a kimeneti paraméterekt adja meg a delphi kódnak, így gyors maradhat (és nekem sem kell a delphivel vacakolni, pláne hogy nem is működik elegendő sebességgel). De ez sehogy nem akar összejönni. Végignéztem egy rakat tutoriált helpet... Azok közül semmivel nem ment. A delphi vagy azt mondja hogy nem léteő dll, vagy azt hogy a menyitott dll-ben nincs ilyen függvény. Nem másolgatok be azokból amit kiőróbáltam mert van vagy 70, de az eredmény ugyanaz, nem tud valaki valami használható ötletet adni? Ja borland developper studio 2006 vagy mi van nekünk.
Azt tudom, hogy az egyik megoldás a C-ben írt dll-re az ez a fajta deklaráció:
extern "C" __declspec(dllexport) int perforationsenzor (int x1, int x2, int y1, int y2, int erzekenyseg)
{
itt jön a kód.
}
Le is fordul szépen, majd hibaüzenetként kiirja, hogy mivel ez egy dll nem tudjuk használni állítsuk be a run/dialogboban, hogy melyik exe használja, na én ezt az exe-t simán elindítom (manuálisan kintről), de a fenti probléma jön elő.
Hozzászólások
delphiben deklarálni kell a függvényedet valahogy így:
talán segíthet még a
és/vagy a
kulcsszó...
--
Falu
Igen így van benne. Semmi változás
megnézed "szemmel", hogy egész pontosan hogy is szerepel az a symbol abban a dllben. valami dekoráció miatt nem találja szerintem
Azt hogy kell? Olyan mit a .so vagy .a linuxban? sima editorral ez egy bináris file.
pff... midnight commanderben F3 és search
És tényleg igazad van. Látod _perforationsenzor lett a neve.
A PostgreSql libpq.dll-jében lévő függvényeket így lehet elérni:
Ami telőtte be jkell tölteni!!!!
Definíció
A betöltő ős osztály:
Betöltés
Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"
Én erősen ajvaslom, hogy Delphiből használjátok a LoadLibrary("tecuccod.dll"); hívást, illetve a proc-ok bemeléséhez a GetProcAddress() -t.
Ez ezért lesz jó nektek, mert ha a C -s dll-edet újrafordítot, nem kell a Delphi-s programot is újrafordítani.
Hova tudnék felölteni egy kis példa-csomagot? :)