Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

How to Import a C# DLL to Delphi 7

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Bill στις 16-06-2008, 11:38. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-06-2008, 10:20 42569

    How to Import a C# DLL to Delphi 7

     Έχω κάνει ένα Dll σε C# και θέλω να το διαβάζει μια εφαρμογή σε Delphi 7 πως μπορώ να το κάνω import ??

    Η εφαρμογή σε Delphi διαβάζει παρόμοια Dll απλά δοκίμασα αν μπορώ να χτίζω πλέον τα Dll σε C#.Ενώ κατάφερα να κάνω το Dll ωστόσο πώς μπορώ να επιλεξω μέσα απο το VS2003/2008 το exe που θα τρέχει??::)Embarrassed


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  02-06-2008, 12:02 42570 σε απάντηση της 42569

    Απ: How to Import a C# DLL to Delphi 7

    Καταρχήν, όταν φτιάχνεις ένα assembly δεν επιλέγεις με ποιό exe θα τρέξει. Απλά φτιάχνεις τη βιβλιοθήκη. Μετά, στο project το οποίο θέλεις να τη χρησιμοποιήσεις προσθέτεις το κατάλληλο reference. Assemblies μπορείς να έχεις μέσα σε αρχεία με κατάληξη dll ή exe, χωρίς αυτό να επηρεάζει το πως θα προσθέσεις το reference.

    Το project της Delphi 7 είναι .NET ή Native? Αν είναι .NET δεν θα πρέπει να έχεις κανένα πρόβλημα να προσθέσεις ένα assembly, σε όποια γλώσσα και να έχει φτιαχτεί. Μην ρωτάς όμως πως να το κάνεις αυτό σε Delphi 7, δεν έχω ιδέα που μπορεί να βρει κανείς πλέον τόσο παλιά έκδοση.

    Αν το project είναι managed, τα πράγματα δυσκολεύουν. Ο ευκολότερος τρόπος είναι να δεις το assembly μέσω .COM Interop. Ουσιαστικά, κάνεις register το assembly με το regasm.exe και μετά το βλέπεις από τη Delphi σα να είναι άλλο ένα COM dll. Αυτό θα σου βάλει αρκετούς περιορισμούς καθώς δεν θα μπορείς να καλέσεις κώδικα που δεν έχει αντίστοιχο σε COM (π.χ. generics).

    Για όλα αυτά θα πρέπει (όπως πάντα) να διαβάσεις το documentation, το κεφάλαιο Interoperating with Unmanaged Code και πιο συγκεκριμένα το Exposing .NET Framework Components to COM. Το COM interop δεν είναι δύσκολο αλλά δεν είναι και τσάμπα, ειδικά όταν χρησιμοποιείς παλιά IDE.

    Να κάνω και μιά γενική παρατήρηση. Η Delphi 7 είναι πολύ παλιά. Ίσως θα έπρεπε να σκεφτείς να ξαναγράψεις το exe σου σε C# παρά να προσπαθείς κάθε φορά να ταιριάξεις .NET και Delphi κώδικα, χάνοντας πολλά από τα πλεονεκτήματα που σου δίνουν οι διάφορες βιβλιοθήκες στο .NET όπως π.χ. τα Validators του Enterprise Library, το ADO.NET ή το LINQ. Όχι ότι δεν μπορείς να τα χρησιμοποιήσεις μέσα στα .NET assemblies σου, δεν θα μπορείς όμως να τα χρησιμοποιήσεις στο exe σου.

    Αν δεν μπορείς να αλλάξεις το exe επειδή πρόκειται π.χ. για μία legacy εφαρμογή η οποία θα είναι δύσκολο να ξαναγραφτεί, σκέψου να περάσεις σε μία πρόσφατη έκδοση της Delphi. Έχουν βγει αρκετές εκδόσεις μετά την 7 οι οποίες θα έχουν λιγότερα προβλήματα στη συνεργασία με το .NET.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  02-06-2008, 22:02 42591 σε απάντηση της 42570

    Απ: How to Import a C# DLL to Delphi 7

    Τελικά είδα το assembly μέσω .com interop και έπαιξα με το regasm.exe όπως ακριβώς μου είπες μιας και το project είναι managed. Και σίγουρα θα έχω πολλους περιορισμούς αλλά προς στιγμην είναι η μόνη λειτουργική λύση!

    Ευχαρηστώ Παναγιώτη


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  16-06-2008, 11:38 42901 σε απάντηση της 42570

    Απ: How to Import a C# DLL to Delphi 7

    Γνωρίζει κανείς αν υπάρχει κανένα έτοιμο utility που να κάνει convert dll Delphi7 Αρχείο σε C#/C++/C ??Έχω κατεβάσει ένα που το κάνει σε mydll.h lib αρχείο αλλά δεν με ικανοποιεί!

    Ευχαρηστώ!


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems