[Megoldva]Borland c-ben írt dll-ek kellenének 5.0-s delphiben. Ötlet?

Sziasztok!

Ennyi a lényeg. Írtam egy dll-t (BorlandC 2006-ban, muszáj hogy az legeyn mert a többi c-ben nincs Tbitmap) + keletkezett hozzá egy lib is (törvényszerüen). Na szóval az a hejzet hogy a delphi-ben írt exe-kelle hogy használja ezt a dll-t. Próbáltam berakni statikusan (függvényt fordításkor belikeli az adott dll-ből.) . Dimamikusan (LoadLibrary), de egyáltalán nem működik. Azza a hibával elszáll, hogy 2 processz ugyanarra a memóriaterületre akar írni. Tud valaki egy mintapéldával segíteni?

Megoldás:
Függvényhívási konvenció volt a probléma. Mind a 2 helyen _stdcall-t kellett használni és működik. Köszönöm.

Hozzászólások

Itt is van egy csomo mindent, egyik megoldast sem neztem meg amit javasolnak: http://www.faqts.com/knowledge_base/view.phtml/aid/23661/fid/175

Delphihez egyebkent nem ertek, de amikor MSVC dll-t akartunk BorlandC++ alkalmazashoz linkelni, akkor hivasi konvenciokkal voltak gondok, meg name manglinggal (bar ez c eseten kevesebb gondot szokott jelenteni). Hivasi konvenciokat erdemes ellenorizni, fuggvenyhivaskor lehet a dll es a hivo alkalmazas is piszkalja a stacket azert fagy ki.

Mindenesetre sok sikert hozza :)

--
ahan nem

Na valameddig eljutottam. Írtam egy megafüggváényt c-ben.

extern "C" __declspec(dllexport) WINAPI int teszt (int x)
{
return x;
}

Ekkor a cucc simán elszáll. Az említett hibával. Misterint 2 processz ugyanazt a memóriaterükletet írkálja, és kapok egy hexa címet.

extern "C" __declspec(dllexport) int teszt (int x)
{
return x;
}

na itt a delphis függvénytesztelőm akármit csinálok
teszt (1....1000000 bármit beírhatok); visszatérési értékként fix 124398-at kapok. A C-s-dll jól dolgozik, mert ha ezt a számot kivonom x-ből konzekvenen mindíg 0-t kapok. Tehát a delphi ad át marhaságot. A dll -be beírtam egy sima printf függvényt az is az említett számot írja ki.

kezdem feladni. Szerintem reménytelen. Egyszerűen nem kopmatibilisek. És akkor még ott van e keménymag, hogy vagy egy komplett képet adokát a szernzoranalizátornak vagy egy 640*480-as pointertömböt.