Moj problem wyglada tak:
Chce pisac z kumplem program. Ja pod Delphi on pod C++ i tu dochodzi do pytania jak to polaczyc ? Wpadlem na pomysl, ze ja napisze Maina, a on DLL do tego. I teraz moje pytanie: Czy DLL pisane dla aplikacji pod Delphi musza byc pisane <ort>rownierz</ort> pod Delphi czy moge byc napisane w innym jezyku programowania ? [???]
Za starych, dobrych czasów, kiedy w naszej pamięci rysował się jeszcze obraz ZX Spectrum żądza wiedzy kazała pasjonatom-programistą, bardziej lub mniej zaawansowanym pisanie w takich sytuacjach krótkego maina i krótką bibliotekę .dll i testowali sobie do woli. Ehhh... ciemna strono forów dyskusyjnych. Możecie spokojnie pisać swoje deelelki.
Śmiało można pisać lecz jeśli robicie to w różnych językach, to poczytaj o sposobie przekazywania parametrów na stos (stdcall, cd.(cośtam)., )
Mały szczegół: warto w bibliotekach DLL "przenośnych" nie używać typów danych specyficznych dla Delphi, oraz nie używać typu string. Zamiast niego lepiej jest stosować PChar.
No wiec ja sie przylacze do postu :P Wiem ze mozna w C++ pisac DLL pod Dlphi ale czy z pod Delphi da sie napisac DLL z ktorej korzystalby C++ ?? :>
{PIT} napisał(a)
(...)ale czy z pod Delphi da sie napisac DLL z ktorej korzystalby C++ ?? :>
A dlaczego nie miałoby się dać?
To jest mozliwe pod warunkiem ze z dll-a nie beda eksportowane klasy, a zadna z eksportowanych funkcji nie bedzie zwracac ani pobierac jako argumentu typu danych specyficznego dla Visual C++.
I odwrotnie, jezeli ktos by chcial uzywac w vc++ bibliotek napisanych w Delphi, to funkcje eksportowane nie moga zwracac ani pobierac jako argumentow zadnych typow danych specyficzynych dla Delphi.
Natomiast wewnatrz biblioteki mozna stosowac wszystkie typy danych i klasy, wazne jest tylko zeby ich nie eksportowac.
Powiadacie, żeby w dll'kach nie używać stringów.
Mam bibliotekę, która zawiera funkcję o takim wyglądzie:
Funkcja(Input: string): string;
Nie działa to i nie mogłem dojść dlaczego. Jeśli tą funkcję wklepałem do kodu głównego programu to wszystko jest ok. Tylko z biblioteki nie trawi.
Czy trzeba użyć PChar? Potrzebny będzie pointer?
zmieniasz na PChar te stringi, przeciez pisali wyraznie
Pociech napisał(a)
Czy trzeba użyć PChar? Potrzebny będzie pointer?
A string i PChar to co innego jak nie wskaźniki właśnie? Ew. na 1. miejscu listy uses biblioteki wrzuć ShareMem, ale wtedy do działania potrzebował będziesz pliku Borlndmm.dll.
Borlndmm.dll
Ten plik będzie potrzebny tylko przy kompilacji czy użytkownik na innym kompie musi też go mieć?
O ile pamiętam to niestety także zewnętrzny użytkownik musi go mieć.