import .NET dll w Delphi

import .NET dll w Delphi
MR
  • Rejestracja:prawie 7 lat
  • Ostatnio:13 dni
  • Postów:118
0

jak zaimportować gotowe dll które są standardowo w katalogu c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0?
np. System.dll
Wszystkie tematy tego typu polegają na odpowiednim przygotowaniu dll. Ja tego nie mogę. Jam mam je odczytać w Delphi.
wiem że nie jest to takie łatwe, ale ja nawet nie wiem jak zacząć.

  1. Jak odczytać listę funkcji z dll? podobno program dotPeek potrafi, ale chyba nie wiem jak go użyć. Ja chcę na początek zwykły MessageBox uruchomić.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Tuchów
  • Postów:12172
3

Identifying Functions in DLLs — wszędzie sugerują to narzędzie.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
MR
  • Rejestracja:prawie 7 lat
  • Ostatnio:13 dni
  • Postów:118
0
furious programming napisał(a):

Identifying Functions in DLLs — wszędzie sugerują to narzędzie.

Też to sprawdziłem, ale to mi zwraca tylko tyle dla każdej dll

Kopiuj
Dump of file c:\Test\dotNet_dll_test\System.dll

File Type: DLL

  Summary

        2000 .reloc
        6000 .rsrc
       DA000 .text
edytowany 2x, ostatnio: flowCRANE
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
1

ale co Ty chcesz zrobić??? Po co importujesz systemowe DLL NETa do delphi? Przecież to nie będzie działać.

To jest jakiś problem XY - napisz co masz zrobić (jakie dostałeś zadanie) a nie co wymyśliłeś, że zrobisz.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

Dlle .Netowe raczej nie zadzialaja, to nie sa zwykle dlle.

PW
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Postów:130
0

W delphi jest taki importer do .net:

screenshot-20220504211434.png

edytowany 1x, ostatnio: flowCRANE
abrakadaber
abrakadaber
ale to jest do importu komponentów
MR
  • Rejestracja:prawie 7 lat
  • Ostatnio:13 dni
  • Postów:118
0

ten importer działa tylko dla dll w postaci obiektów COM
widzę że tylko absurdalnie drogie komponenty potrafią to połączyć.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
0
My Razem napisał(a):

jak zaimportować gotowe dll które są standardowo w katalogu c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0?
np. System.dll

Wszystkie tematy tego typu polegają na odpowiednim przygotowaniu dll. Ja tego nie mogę. Jam mam je odczytać w Delphi.

Pytanie po co. Ale jeśli na jakiejś funkcjonalności z .NET ci bardzo bardzo zależy, można w C++/CLI napisać DLLkę typu mixed-mode która wewnętrznie może używać .NETa, a na zewnątrz wyeksportuje funkcje do których Delphi może się odwołać tak jak to się robi z każdą zwykłą DLL-ką.

MR
  • Rejestracja:prawie 7 lat
  • Ostatnio:13 dni
  • Postów:118
0

I tu jest właśnie problem, że ja od zewnętrznego klienta dostaję gotowe dll pisane .NET i nie mam możliwości ich zmiany.
Na tych gotowych plikach ja robię testy.

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
2

to napisz sobie wrapera COM na to co te dllki oferują i zaimportuj go w delphi https://aakinshin.net/posts/wrap-cs-in-com/ Nie musisz owijać wszystkich metod a jedynie te, których potrzebujesz


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
3
My Razem napisał(a):

I tu jest właśnie problem, że ja od zewnętrznego klienta dostaję gotowe dll pisane .NET i nie mam możliwości ich zmiany.
Na tych gotowych plikach ja robię testy.

Pisałeś że chodzi o "gotowe dll które są standardowo w katalogu c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0".
Zmieniasz zeznania.

Prawidłowo to te testy powinny być raczej też pod .NETem, w domyśle w C#.
No ale da się to zrobić tak jak napisałem. Nie jestem przekonany czy to ma sens. Szukaj pod "C++/CLI bridge DLL" albo podobnie.

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 9 godzin
  • Postów:1597
0
My Razem napisał(a):

I tu jest właśnie problem, że ja od zewnętrznego klienta dostaję gotowe dll pisane .NET i nie mam możliwości ich zmiany.
Na tych gotowych plikach ja robię testy.

Kiedyś było coś takiego jak delphi prism i z tego co pamiętam to oni właśnie zrobili taką delphiową wersję nakładki na .NET jednak sam projekt (prism) był dużym niewypałem ale pamiętam, że tam dll .netowe obsługiwało się jak normalne dll choć bawiłem się tym dość krótko

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.