Mam własną biblioteke dll która musi korzystać z innych. Jestem zmuszony je zawsze dołączać, czy jest taka możliwość aby skompilować ze sobą razem te 3 biblioteki ale tak żeby ta moja była główną, jako załącznik czy coś?
- jak masz ich źródła to możesz napisac jedną
- możesz te 3 wciągnąć do zasobów exe albo dll Twojej i jak są potrzebne wypakowywać je na hdd
Nie mam ich źródeł :(
Chodzi o biblioteki SSL libeay32.dll i ssleay32.dll. Udało mi sie je dodać jako zasób (Resources) przez ResHack ale nie wiem jak zrobić aby moja biblioteka z nich korzystała (bo wywala takie błedy jakby ich nie widziała)
o zanim się do nich odwołasz to je musisz wypakować i zapisać na hdd jako pliki dll
A jak je wypakować? Szukałem w artach i faq o zasobach ale tam tylko o wstawianiu kursora było
----EDIT----
Ok już sobie poradziłem, dzieki. Mam tylko pytanie, czy taki plik dołączony w zasobać nie potrzebnie zajmuje dodatkowo pamięc czy korzysta z niej tylko wtedy kiedy jest używany?
Standardem na forum jest że nawet jeśli sam doszedłeś do rozwiązania to podajesz je innym. Ileś osób poświęca czas próbując pomóc w rozwiązaniu problemu i rozwiązanie powinno się podać. Z forum korzysta wielu ludzi i teraz osoby o podobnym problemie będą zakłądać nowy wątek z zapytaniem jak to zrobić.
Czyli tak do skompilowanej niespakowanej biblioteki dodałem nowy zasób (Resources) za pomocą ResHacka a nastepnie aby wypakować to w OnCreate formy dałem taki kodzik:
procedure TForm1.FormCreate(Sender: TObject);
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(hInstance,'Program',RT_RCDATA); // wyciągnij plik
Res.SaveToFile('C:\libeay32.dll'); // zapisz na dysku
Res.Free; //zwolnij zmienną
end;
Oczywiście zamiast C:\libeay32.dll' można dać Application.... i rozpakuje tam gdzie uruchomiony plik :). Przy dodawaniu zasobu w Reshack jako nazwe dałem Program a typ RCDATA (bez RT_)