
Που τυγχάνουν υπάρχουν εργαλεία της γραμμής για να βρείτε αναδρομικά όλες τις εξαρτήσεις DLL; Προσπάθησα [DUMPBIN](http://support.microsoft.com/kb/177429) και [Εξάρτηση Walker](http://www.dependencywalker.com/) (γνωστός και ως Depends.exe) που έρχονται με το Visual Studio, αλλά DUMPBIN βρίσκει μόνο το πρώτο επίπεδο των εξαρτήσεων, και η έξοδος των Εξάρτηση Walker δεν είναι πραγματικά φιλικό υπολογιστή.

 
Εργαλείο γραμμής εντολών για να βρείτε Dll εξαρτήσεις
=====================================================



Δοκιμάστε την `/oc:FILENAME`επιλογή να εξαρτάται, να γράψει ένα κόμμα αρχείο τιμών διαχωρισμένων. Αυτό μοιάζει να είναι πιο εύκολο να αναλύσει από τη μηχανή από την «ελεύθερη μορφή» αρχείο κειμένου που δημιουργείται από την / ot: ΑΡΧΕΙΟ / επιλογή.

 

[Εξάρτηση Walker](http://www.dependencywalker.com/) έχει [πολλές επιλογές](http://www.dependencywalker.com/help/html/hidr_command_line_help.htm) συμπεριλαμβανομένης της εξόδου σε αρχείο επιλογές. Ένα από αυτά είναι `/oc:<path>`το οποίο γράφει την έξοδο σε ένα [αρχείο CSV](http://en.wikipedia.org/wiki/Comma-separated_values) , το οποίο μπορεί εύκολα να αναλυθεί με άλλα εργαλεία ή ακόμα και απλά εισάγονται σε εφαρμογή λογιστικών φύλλων.


Ανάλογα με το τι θα πρέπει να έχετε τις εξαρτήσεις για σας να έχετε πραγματικά cross-platform εργαλεία για να το κάνετε αυτό πάρα πολύ - για παράδειγμα [CMake fixup-πακέτο](http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:BundleUtilities) το οποίο μπορεί να αντιγράψει όλες τις ανιχνεύεται εξαρτήσεις μη-σύστημα στη θέση του στόχου σας (εκτελέσιμο ή κοινή βιβλιοθήκη), ακόμα και σε Windows. Η τεκμηρίωση δεν το εξηγήσω με σαφήνεια, αλλά έχω να το χρησιμοποιούν για το σκοπό αυτό σε ένα πρόγραμμα cross-platform για μια στιγμή τώρα.

 

Χρησιμοποιώντας την `/oc:<path>`επιλογή, [Εξάρτηση Walker](http://www.dependencywalker.com/) σας δίνει ένα [αρχείο CSV](http://en.wikipedia.org/wiki/Comma-separated_values) που είναι εύκολο να αναλυθεί. Αν θέλετε, επίσης, τις διαδρομές στις βιβλιοθήκες θα πρέπει, επίσης, να χρησιμοποιήσετε την `-f 1`επιλογή. Μπορεί να θέλετε να το κάνετε αυτό, αν θέλετε να αντιγράψετε τις βιβλιοθήκες (π.χ. για να κάνει μια διανεμητέα έκδοση του ένα εκτελέσιμο).


Δυστυχώς, στην έξοδο από Depends.exe τις διαδρομές για τις βιβλιοθήκες μετατρέπονται σε πεζά και το όνομα DLL μετατρέπεται σε κεφαλαία. Για παράδειγμα,



> 
> c: \ qtsdk \ desktop \ qt \ 4.7.4 \ MinGW \ bin \ QTCORE4.DLL
> 
> 
> 


Όταν η βιβλιοθήκη είναι στην πραγματικότητα βρίσκεται στη διεύθυνση:



> 
> C: \ QtSDK \ Desktop \ Qt \ 4.7.4 \ MinGW \ bin \ QtCore4.dll
> 
> 
> 


Δεν φαίνεται να είναι ένας τρόπος για να πάρετε Depends.exe να αναφέρουν τις διαδρομές σωστά ποια είναι ντροπή.

 